Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

E-Mail


Сергей Г ©   (2004-06-21 07:55:00) 

Доброго всем время суток!
Уважаемые мастера подскажите как сделать так чтобы
при запуске программы отправлялось сообщение на
определенный E-Mail, с определенной темой,
и определенным содержанием(всегда одно и тоже)


Сергей Г   (2004-06-21 10:28:00) [1]

Спасибо всем


Rouse_   (2004-06-21 10:18:00) [2]

А допустимо ли это с точки зрения конечного пользователя и известно ли ему об этом?

Если да, то лови (пользователь будет сам нажимать кнопку с подтверждением...)

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 TfrmMain.N8Click(Sender: TObject);
var
 Path: String;
 Mail: TStringList;
begin
 Path := CreateArchive; // Создает архив возвращает результатом путь к архиву
 if Path <> '' then
 begin
   Mail := TStringList.Create;
   try
     Mail.values['to'] := 'addr@yandex.ru';
     Mail.values['subject'] := 'Отчет "' + ExtractFileName(FSettings.ReportDBase) + '"';
     Mail.values['body'] :=
       'Данное письмо было сгенерировано автоматически программой "Расылка, версия: ' +
       GetFileVersion(ParamStr(0)) + '"' + #13#10 +
       'и содержит в себе вложенный архив с отчетом о изменениях в базе данных по Вашему' + #13#10 +
       'региону в виде файла "' + Path + '"' + #13#10 + #13#10 +
       'Также, при желании, вы можете добавить к данному письму любые файлы, которые посчитаете' + #13#10 +
       'необходимыми для дальнейшей работы программы (к примеру список новых фирм в любом формате)';

     Mail.values['attachment0'] := Path;
     sendEMail(Application.Handle, Mail);
   finally
     Mail.Free;
   end;
 end;
end;


---
Желаю успехов


Anatoly Podgoretsky   (2004-06-21 09:20:00) [3]

Восспользоваться любым компонентом из поставки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо