Hi,
heute präsentiere ich euch eine Funktion, mit der sich einzelne Dateien per E-Mail versenden lassen. Das ganze über das Standard Mailkonto des Standardmailprogramms.
Verwendete Units:
Die
Unit MAPI muss eingebunden werden.
Paramert
FileName Name und Pfad der Datei, die per E-Mail versendet werden soll
Subject Betreff
BodyText Text der Nachricht
RecipAdress E-Mail Adresse des Empfängers
Rückgabewerte
Wenn kein Fehler aufgetreten ist, gibt SendFileMail() eine leeren String zurück. Ist ein Fehler aufgetreten, wird eine Fehlermeldung als String zurückgegeben. Dummerweise lässt sich nicht immer feststellen, ob ein Fehler aufgetreten ist, da die verwendete
MAPI Funktion MapiSendMail() nicht immer bei einem Fehler auch den richtigen Rückgabewert zurückgibt. Es kann also auch ein leerer String zurückgegeben werden, wenn zum Beispiel das Versenden der E-Mail vom Benutzer abgebrochen wurde oder keine Verbindung hergestellt werden konnte. (Bedanken wir uns bei Microsoft).
Beispiel:
Nach Aufruf der Funktion SendFileMail() wird die E-Mail sofort mit dem Standardmailprogramm über das Standard E-Mailkonto versendet.
Delphi-Quellcode:
…
var
S: String;
…
S := SendFileMail('C:\Eigene Dateien\_Test\Neu.txt', 'Betreff', 'Meine Nachricht',
'Empfängername', 'Konto@Anbieter.de');
if Length(S) > 0 then
begin
Beep;
MessageDlg('Die Datei konnte nicht per E-Mail versendet werden!' + #10#13#10#13 +
'Meldung:' + #10#13 + S, mtError, [mbOK], 0);
end;
…
Quellcode:
Delphi-Quellcode:
function SendFileMail(
const FileName: TFileName;
const Subject, BodyText, RecipName, RecipAdress:
String):
String;
var
mMessage: TMapiMessage;
mlpFiles: TMapiFileDesc;
mRecips: TMapiRecipDesc;
begin
if not FileExists(FileName)
then
begin
Result := '
File "' + FileName + '
" not found!';
Exit;
end;
with mRecips
do
begin
ulRecipClass := MAPI_TO;
lpszName := PChar(RecipName);
lpszAddress := StrNew(PChar('
SMTP:' + RecipAdress));
ulEIDSize := 0;
lpEntryID :=
nil;
end;
with mlpFiles
do
begin
flFlags := 0;
nPosition := 0;
lpszPathName := PChar(FileName);
lpszFileName :=
nil;
lpFileType :=
nil;
end;
with mMessage
do
begin
lpszSubject := PChar(Subject);
lpszNoteText := PChar(BodyText);
lpszMessageType :=
nil;
lpszDateReceived :=
nil;
lpszConversationID :=
nil;
flFlags := 0;
lpOriginator :=
nil;
nRecipCount := 1;
lpRecips := @mRecips;
nFileCount := 1;
lpFiles := @mlpFiles;
end;
case MapiSendMail(0, 0, mMessage, MAPI_LOGON_UI
or MAPI_NEW_SESSION, 0)
of
MAPI_E_AMBIGUOUS_RECIPIENT:
Result := '
A recipient matched more than one of the recipient descriptor structures and MAPI_DIALOG was not set!';
MAPI_E_ATTACHMENT_NOT_FOUND:
Result := '
The specified attachment was not found!';
MAPI_E_ATTACHMENT_OPEN_FAILURE:
Result := '
The specified attachment could not be open!';
MAPI_E_BAD_RECIPTYPE:
Result := '
The type of a recipient was not MAPI_TO, MAPI_CC, or MAPI_BCC!';
MAPI_E_FAILURE:
Result := '
One or more unspecified errors occurred!';
MAPI_E_INSUFFICIENT_MEMORY:
Result := '
There was insufficient memory to proceed!';
MAPI_E_LOGIN_FAILURE:
Result := '
There was no default logon, and the user failed to log on successfully when the logon dialog box was displayed!';
MAPI_E_TEXT_TOO_LARGE:
Result := '
The text in the message was too large to sent!';
MAPI_E_TOO_MANY_FILES:
Result := '
There were too many file attachments!';
MAPI_E_TOO_MANY_RECIPIENTS:
Result := '
There were too many recipients!';
MAPI_E_UNKNOWN_RECIPIENT:
Result := '
A recipient did not appear in the address list!';
MAPI_E_USER_ABORT:
Result := '
The user canceled one of the dialog boxes!';
end;
end;
[edit=Matze]Code formatiert. Mfg, Matze[/edit]