1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
function SendMail(const Subject, MessageText, MailFromName, MailFromAddress,
MailToName, MailToAddress: String; const attachments: array of String; WinHandle: THandle = 0):
boolean;
var
MAPIError: DWord;
MapiMessage: TMapiMessage;
Originator, Recipient: TMapiRecipDesc;
Files, FilesTmp: PMapiFileDesc;
FilesCount: Integer;
begin
FillChar(MapiMessage, Sizeof(TMapiMessage), 0);
MapiMessage.lpszSubject := PChar(Subject);
MapiMessage.lpszNoteText := PChar(MessageText);
FillChar(Originator, Sizeof(TMapiRecipDesc), 0);
Originator.lpszName := PChar(MailFromName);
Originator.lpszAddress := PChar(MailFromAddress);
MapiMessage.lpOriginator := @Originator;
MapiMessage.nRecipCount := 1;
FillChar(Recipient, Sizeof(TMapiRecipDesc), 0);
Recipient.ulRecipClass := MAPI_TO;
Recipient.lpszName := PChar(MailToName);
Recipient.lpszAddress := PChar(MailToAddress);
MapiMessage.lpRecips := @Recipient;
MapiMessage.nFileCount := High(attachments) - Low(attachments) + 1;
Files := AllocMem(SizeOf(TMapiFileDesc) * MapiMessage.nFileCount);
MapiMessage.lpFiles := Files;
FilesTmp := Files;
for FilesCount := Low(attachments) to High(attachments) do
begin
FilesTmp.nPosition := $FFFFFFFF;
FilesTmp.lpszPathName := PChar(attachments[FilesCount]);
Inc(FilesTmp)
end;
try
MAPIError := MapiSendMail(0, 0,
MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
result:= MAPIError = 0;
finally
FreeMem(Files)
end
end; |
Partager