Вернуться Форум Bashtel.RU > Разное > Компьютеры > Программирование
Ответ
 
Опции темы Опции просмотра

Delphi
Старый 19.03.2008, 22:38   #1
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию Delphi

Мне нужно с помощью компонента Indy отправить данные с TextBox'a . Скажите как мне это реализовать&
  Ответить с цитированием
 

Старый 20.03.2008, 06:24   #2
Местный
 
joker-str вне форума
Регистрация: 10.07.2007
Сообщений: 395
По умолчанию

с помошью вот этой функции WriteLn();
__________________
http://underworld.bashtel.ru
  Ответить с цитированием
 

Старый 20.03.2008, 14:41   #3
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

Блин я поторопился не написал. Надо отправить на Email
  Ответить с цитированием
 

Старый 20.03.2008, 16:37   #4
Завсегдатай форума
 
Демьян вне форума
Регистрация: 13.08.2007
Сообщений: 1,190
По умолчанию

Цитата:
Сообщение от dura4ok Посмотреть сообщение
Блин я поторопился не написал. Надо отправить на Email
dura4ok
ну тебе простительно =)
  Ответить с цитированием
 

Старый 20.03.2008, 19:21   #5
Местный
 
joker-str вне форума
Регистрация: 10.07.2007
Сообщений: 395
По умолчанию

ууууууууууууу это очень сложно сделать и не через Indy!
и в следующий раз смотри хелп!

Код:
uses ..., MAPI;
// отправка письма с вложением
//============================================================================
function SendEMail(Handle: THandle; Mail: TStrings): Cardinal; 
type
TAttachAccessArray = array [0..0] of TMapiFileDesc;
PAttachAccessArray = ^TAttachAccessArray;
var
MapiMessage: TMapiMessage;
Receip: TMapiRecipDesc;
Attachments: PAttachAccessArray;
AttachCount: Integer;
i1: integer;
FileName: string;
dwRet: Cardinal;
MAPI_Session: Cardinal;
WndList: Pointer;
begin
Result := 0;
dwRet := MapiLogon(Application.Handle,
   nil,
   nil,
   MAPI_NEW_SESSION + MAPI_LOGON_UI,
   0, @MAPI_Session);
if (dwRet <> SUCCESS_SUCCESS) then
begin 
   MessageBox(Handle,
     PChar('Error while trying to send email'), 
     PChar('Error'),
     MB_ICONERROR or MB_OK); 
end
else
begin
   FillChar(MapiMessage, SizeOf(MapiMessage), #0);
   Attachments := nil;
   FillChar(Receip, SizeOf(Receip), #0);
 
   if Mail.Values['to'] <> '' then
   begin
     Receip.ulReserved := 0;
     Receip.ulRecipClass := MAPI_TO;
     Receip.lpszName := StrNew(PChar(Mail.Values['to']));
     Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to']));
     Receip.ulEIDSize := 0;
     MapiMessage.nRecipCount := 1;
     MapiMessage.lpRecips := @Receip;
   end;
 
   AttachCount := 0;
 
   for i1 := 0 to MaxInt do
   begin
     if Mail.Values['attachment' + IntToStr(i1)] = '' then
       break; 
     Inc(AttachCount); 
   end;
 
   if AttachCount > 0 then 
   begin 
     GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount);
 
     for i1 := 0 to AttachCount - 1 do 
     begin
       FileName := Mail.Values['attachment' + IntToStr(i1)]; 
       Attachments[i1].ulReserved := 0; 
       Attachments[i1].flFlags := 0; 
       Attachments[i1].nPosition := ULONG($FFFFFFFF); 
       Attachments[i1].lpszPathName := StrNew(PChar(FileName)); 
       Attachments[i1].lpszFileName := 
         StrNew(PChar(ExtractFileName(FileName)));
       Attachments[i1].lpFileType := nil; 
     end; 
     MapiMessage.nFileCount := AttachCount;
     MapiMessage.lpFiles := @Attachments^;
   end;
 
   if Mail.Values['subject'] <> '' then
     MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject']));
   if Mail.Values['body'] <> '' then
     MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body']));
 
   WndList := DisableTaskWindows(0);
   try
   Result := MapiSendMail(MAPI_Session, Handle,
     MapiMessage, MAPI_DIALOG, 0);
   finally
     EnableTaskWindows( WndList );
   end;
 
   for i1 := 0 to AttachCount - 1 do
   begin
     StrDispose(Attachments[i1].lpszPathName);
     StrDispose(Attachments[i1].lpszFileName);
   end;
 
   if Assigned(MapiMessage.lpszSubject) then
     StrDispose(MapiMessage.lpszSubject);
   if Assigned(MapiMessage.lpszNoteText) then
     StrDispose(MapiMessage.lpszNoteText);
   if Assigned(Receip.lpszAddress) then
     StrDispose(Receip.lpszAddress);
   if Assigned(Receip.lpszName) then
     StrDispose(Receip.lpszName);
   MapiLogOff(MAPI_Session, Handle, 0, 0);
end;
end;
Пример использования:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Mail: TStringList;
begin
Mail := TStringList.Create;
try
   Mail.values['to'] := 'почтовый@адрес';
   Mail.values['subject'] := 'Тема письма';
   Mail.values['body'] := 'Любой текст письма';
//вот сдесь твой текст из чекбокса сам берешь только я не понял где находится этот компонент textbox у меня такого нет
   Mail.values['attachment0'] := 'Путь к файлу';
   sendEMail(Application.Handle, Mail);
finally
   Mail.Free;
end;
end;
взято из DRKB
__________________
http://underworld.bashtel.ru
  Ответить с цитированием
 

Старый 20.03.2008, 20:45   #6
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

joker-str огромное спасибо тебе. Ты меня очень выручил
  Ответить с цитированием
 

Старый 21.03.2008, 08:14   #7
Местный
 
Аватар для [WizardJIOCb]
 
[WizardJIOCb] вне форума
Регистрация: 29.08.2007
Адрес: Октябрьский
Сообщений: 523
По умолчанию

вот вы нафлудили тупости))
если дельфи 6 то можно юзать НМ компоненты ещё например ТNMSMTP

NMSMTP1.Host := 'mail.host.com';
NMSMTP1.UserID := 'Username';
NMSMTP1.Connect;
NMSMTP1.PostMessage.FromAddress := 'your_mail@host.com';
NMSMTP1.PostMessage.ToAddress.Text := 'delphiworld@mail.ru';
NMSMTP1.PostMessage.ToCarbonCopy.Text := 'your_mail@host.com';
NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := 'second_your_mail@host.com';
NMSMTP1.PostMessage.Body.Text := 'This is the message from Delphi World project';
NMSMTP1.PostMessage.Attachments.Text := 'c:\File.txt';
NMSMTP1.PostMessage.Subject := 'Delphi World is Great!';
NMSMTP1.SendMail;
ShowMessage('Mail sent !');
NMSMTP1.Disconnect;

Добавлено через 1 минуту
вариант если дельфи 7 или выше:
пример юзает компонент TIdSMTP которые находятся на вкладке Indy:

var
M: TIdMessage;
begin
M := TIdMessage.Create(Form1);

M.Body.Add('Типа первая строчка собщения');
M.Body.Add('Типа вторая строчка собщения');
M.From.Text := '"Рустик" <boris@uacity.com>'; //отправитель
M.Recipients.Add;
M.Recipients.Items[0].Text := '"Тест" <antohha@ukr.net>'; //Получатель
M.Subject := 'Ну чо? потестим? =)'; //Тема письма

IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := 'uacity.com';
IdSMTP1.Username := 'boris';
IdSMTP1.Password := '1234'; // - ну свой пароль я те не выдам :-Р
IdSMTP1.Connect();
if IdSMTP1.Connected then
begin
IdSMTP1.Send(M);
end;
IdSMTP1.Disconnect;

Последний раз редактировалось [WizardJIOCb]; 21.03.2008 в 08:16.. Причина: Добавлено сообщение
  Ответить с цитированием
 

Старый 21.03.2008, 13:52   #8
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

А возможно ли сделать так чтобы пользователь не видел куда отправляется письмо, т.е. ни каких окон не выводилось. Если такое возможно то напишите пожалуйста как это реализовать.
PS. Я нашёл пример но в нём Delphi 7 выдаёт ошбику. вот он:

unit Email;

interface

uses
Windows, SusUtils, Classes;

function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;

function IsOnline: Boolean;

implementation
uses Mapi;

function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
var
MapiMessage: TMapiMessage;
MapiFileDesc: TMapiFileDesc;
MapiRecipDesc: TMapiRecipDesc;
i: integer;
s: string;
begin
with MapiRecipDesc do
begin
ulRecerved:= 0;// сдесь ошибка
ulRecipClass:= MAPI_TO;
lpszName:= PChar(RecipName);
lpszAddress:= PChar(RecipAddress);
ulEIDSize:= 0;
lpEntryID:= nil;
end;

with MapiFileDesc do
begin
ulReserved:= 0;
flFlags:= 0;
nPosition:= 0;
lpszPathName:= PChar(Attachment);
lpszFileName:= nil;
lpFileType:= nil;
end;

with MapiMessage do
begin
ulReserved := 0;
lpszSubject := nil;
lpszNoteText := PChar(Subject);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @MapiRecipDesc;
if length(Attachment) > 0 then
begin
nFileCount:= 1;
lpFiles := @MapiFileDesc;
end
else
begin
nFileCount:= 0;
lpFiles:= nil;
end;
end;

Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;


function IsOnline: Boolean;
var
RASConn: TRASConn;
dwSize,dwCount: DWORD;
begin
RASConns.dwSize:= SizeOf(TRASConn);
dwSize:= SizeOf(RASConns);
Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
Result:= (Res = 0) and (dwCount > 0);
end;

end.
  Ответить с цитированием
 

Старый 21.03.2008, 23:33   #9
Местный
 
Аватар для [WizardJIOCb]
 
[WizardJIOCb] вне форума
Регистрация: 29.08.2007
Адрес: Октябрьский
Сообщений: 523
По умолчанию

да сделай так как я написал выше просто параметр visible у формы установи в false и всё. А если тебе нужно это в консольном приложение то всё будет много сложнее))
  Ответить с цитированием
 

Старый 24.03.2008, 15:18   #10
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

Я делаю как ты написал но вылазит окно почотвой программы там и выводится вся инфа которую я отправляю. Как избежать появления этого окна?
  Ответить с цитированием
 

Старый 26.03.2008, 11:21   #11
Местный
 
Аватар для [WizardJIOCb]
 
[WizardJIOCb] вне форума
Регистрация: 29.08.2007
Адрес: Октябрьский
Сообщений: 523
По умолчанию

Цитата:
Сообщение от [WizardJIOCb] Посмотреть сообщение
вот вы нафлудили тупости))
если дельфи 6 то можно юзать НМ компоненты ещё например ТNMSMTP

NMSMTP1.Host := 'mail.host.com';
NMSMTP1.UserID := 'Username';
NMSMTP1.Connect;
NMSMTP1.PostMessage.FromAddress := 'your_mail@host.com';
NMSMTP1.PostMessage.ToAddress.Text := 'delphiworld@mail.ru';
NMSMTP1.PostMessage.ToCarbonCopy.Text := 'your_mail@host.com';
NMSMTP1.PostMessage.ToBlindCarbonCopy.Text := 'second_your_mail@host.com';
NMSMTP1.PostMessage.Body.Text := 'This is the message from Delphi World project';
NMSMTP1.PostMessage.Attachments.Text := 'c:\File.txt';
NMSMTP1.PostMessage.Subject := 'Delphi World is Great!';
NMSMTP1.SendMail;
ShowMessage('Mail sent !');
NMSMTP1.Disconnect;

Добавлено через 1 минуту
вариант если дельфи 7 или выше:
пример юзает компонент TIdSMTP которые находятся на вкладке Indy:

var
M: TIdMessage;
begin
M := TIdMessage.Create(Form1);

M.Body.Add('Типа первая строчка собщения');
M.Body.Add('Типа вторая строчка собщения');
M.From.Text := '"Рустик" <boris@uacity.com>'; //отправитель
M.Recipients.Add;
M.Recipients.Items[0].Text := '"Тест" <antohha@ukr.net>'; //Получатель
M.Subject := 'Ну чо? потестим? =)'; //Тема письма

IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Host := 'uacity.com';
IdSMTP1.Username := 'boris';
IdSMTP1.Password := '1234'; // - ну свой пароль я те не выдам :-Р
IdSMTP1.Connect();
if IdSMTP1.Connected then
begin
IdSMTP1.Send(M);
end;
IdSMTP1.Disconnect;
вот то что я писал, какое нафиг окно почотвой программы, это компоненты которые работают с SMTP, никаких форм там не может быть, ты скорее всего не мой пост смотрел когда копировал...
  Ответить с цитированием
 

Старый 26.03.2008, 13:11   #12
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

Я смотрел именно твой пост. Если хочешь могу выложить проект и ты посмотришь.
  Ответить с цитированием
 

Старый 26.03.2008, 13:55   #13
Местный
 
Аватар для [WizardJIOCb]
 
[WizardJIOCb] вне форума
Регистрация: 29.08.2007
Адрес: Октябрьский
Сообщений: 523
По умолчанию

ммм, начит я тупанул)
есть компоненты которые отправляют письма только там нужно сами серверы на входящию и исходящую почту вписывать + логин пароль к мыльнице что не есть гуд, потому что любые незакомпрессеные программы можно легко отрктьы нех редактором, дебагером и с лёгкостью вытащить и мыло и пароль, лучше придумать способ получше, например научится работать с какими нибуть почтовыми ботами через твою программу итд итп.
  Ответить с цитированием
 

Старый 26.03.2008, 14:04   #14
Пользователь
 
Аватар для dura4ok
 
dura4ok вне форума
Регистрация: 02.01.2007
Адрес: Салават
Сообщений: 254
По умолчанию

Мне надо эту прогу дать одному тока человечку и он не будет вскрыват её hex редактором 100%. Компонент fakEmail(вроде так пишется) подойдёт?
  Ответить с цитированием
 

Старый 26.03.2008, 15:36   #15
Местный
 
Аватар для [WizardJIOCb]
 
[WizardJIOCb] вне форума
Регистрация: 29.08.2007
Адрес: Октябрьский
Сообщений: 523
По умолчанию

не знаю не слышал щас поищю чё нить
  Ответить с цитированием
 
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi crazyjunk Программирование 1 17.03.2012 21:09
Delphi †lexx† Программирование 3 10.05.2010 17:57
Delphi 7 WeStMaN Программирование 25 04.10.2009 21:25
Помощь в Delphi brutal Общение 6 10.11.2008 22:10
Delphi 7? Xsandr Компьютеры 3 06.07.2007 10:37



Текущее время: 05:32. Часовой пояс GMT +3.


vBulletin skin developed by: eXtremepixels
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot
top of page