Procedure SendMail(Subject,Mailtext,
FromName,FromAdress,
ToName,ToAdress,
AttachedFileName,
DisplayFileName:
string;
ShowDialog:boolean);
var
MapiMessage : TMapiMessage;
MError : Cardinal;
Empfaenger :
Array[0..1]
of TMapiRecipDesc;
Absender : TMapiRecipDesc;
Datei :
Array[0..1]
of TMapiFileDesc;
begin
with MapiMessage
do begin
ulReserved := 0;
// Betreff
lpszSubject := PChar(Subject);
// Body
lpszNoteText := PChar(Mailtext);
lpszMessageType :=
nil;
lpszDateReceived :=
nil;
lpszConversationID :=
nil;
flFlags := 0;
// Absender festlegen
Absender.ulReserved:=0;
Absender.ulRecipClass:=MAPI_ORIG;
Absender.lpszName:= PChar(FromName);
Absender.lpszAddress:= PChar(FromAdress);
Absender.ulEIDSize:=0;
Absender.lpEntryID:=nil;
lpOriginator := @Absender;
// Empfänger festlegen (Hier: nur 1 Empfänger)
nRecipCount := 1;
Empfaenger[0].ulReserved:=0;
Empfaenger[0].ulRecipClass:=MAPI_TO;
Empfaenger[0].lpszName:= PChar(ToName);
Empfaenger[0].lpszAddress:= PChar(ToAdress);
Empfaenger[0].ulEIDSize:=0;
Empfaenger[0].lpEntryID:=nil;
lpRecips := @Empfaenger;
// Dateien anhängen (Hier: nur 1 Datei)
nFileCount := 1;
// Name der Datei auf der Festplatte
Datei[0].lpszPathName:= PChar(AttachedFilename);
// Name, der in der Email angezeigt wird
Datei[0].lpszFileName:= PChar(DisplayFilename);
Datei[0].ulReserved:=0;
Datei[0].flFlags:=0;
Datei[0].nPosition:=Cardinal(-1);
Datei[0].lpFileType:=nil;
lpFiles := @Datei;
end;
// Senden
if ShowDialog
then
MError := MapiSendMail(0, Application.Handle,
MapiMessage, MAPI_DIALOG
or MAPI_LOGON_UI, 0)
else
// Wenn kein Dialogfeld angezeigt werden soll:
MError := MapiSendMail(0, Application.Handle, MapiMessage, 0, 0);
Case MError
of
MAPI_E_AMBIGUOUS_RECIPIENT:
MessageDlg('
Empfänger nicht eindeutig. (Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);
MAPI_E_ATTACHMENT_NOT_FOUND:
MessageDlg('
Datei zum Anhängen nicht gefunden',mterror,[mbok],0);
MAPI_E_ATTACHMENT_OPEN_FAILURE:
MessageDlg('
Datei zum Anhängen konnte nicht geöffnet werden.',mterror,[mbok],0);
MAPI_E_BAD_RECIPTYPE:
MessageDlg('
Empfängertyp nicht MAPI_TO, MAPI_CC oder MAPI_BCC.',mterror,[mbok],0);
MAPI_E_FAILURE:
MessageDlg('
Unbekannter Fehler.',mterror,[mbok],0);
MAPI_E_INSUFFICIENT_MEMORY:
MessageDlg('
Nicht genug Speicher.',mterror,[mbok],0);
MAPI_E_LOGIN_FAILURE:
MessageDlg('
Benutzerlogin (z.B. bei Outlook) fehlgeschlagen.',mterror,[mbok],0);
MAPI_E_TEXT_TOO_LARGE:
MessageDlg('
Text zu groß.',mterror,[mbok],0);
MAPI_E_TOO_MANY_FILES:
MessageDlg('
Zu viele Dateien zum Anhängen.',mterror,[mbok],0);
MAPI_E_TOO_MANY_RECIPIENTS:
MessageDlg('
Zu viele Empfänger angegeben.',mterror,[mbok],0);
MAPI_E_UNKNOWN_RECIPIENT: MessageDlg('
Empfänger nicht in Adressbuch gefunden. '+
'
(Nur möglich, wenn Emailadresse nicht angegeben.)',mterror,[mbok],0);
MAPI_E_USER_ABORT:
MessageDlg('
Benutzer hat Senden abgebrochen oder MAPI nicht installiert.',mterror,[mbok],0);
SUCCESS_SUCCESS:
MessageDlg('
Erfolgreich !!! (Aber Absenden nicht garantiert.)',mtinformation,[mbok],0);
End;
end;