![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сергей Г © (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]Восспользоваться любым компонентом из поставки.