![]() |
E-Mail mit Anhang im E-Mailclient
Hallo,
mit ![]() Mein Ansinnen ist nun, die E-Mail nicht direkt zu versenden, sondern statt dessen im E-Mailclient zu öffnen. Hintergrund dieses Wunsches ist, dass bei obigem Lösungsansatz auch dann versucht wird, die Mail zu verschicken, wenn man gerade offline ist. Ich fände es nun praktisch, wenn in diesem Fall einfach der entsprechende Eintrag im Postausgang gespeichert würde und somit später versandt werden könnte. Zusätzlicher Nutzen wäre dabei, dass der Anwender noch nachvollziehbarer präsentiert bekommt, was gerade passiert, und somit nicht der irrigen Vermutung anheim fiele, dass sensible Daten ohne sein Wissen übermittelt würden. Hat jemand eine Idee, wie ich das bewerkstelligen kann? Danke und Gruß Opa |
Re: E-Mail mit Anhang im E-Mailclient
Neben der Funktion
![]() ![]() MAPISaveMail speichert die EMail lokal im Client (kann später manuell gesendet werden). |
Re: E-Mail mit Anhang im E-Mailclient
Hallo
und Danke für die Rückmeldung. Ich habe jetzt ein paar Stunden gesucht, aber nirgendwo eine nachvollziehbare Delphi-Umsetzung von MAPISaveMail gefunden. Leider klappt's mit den Parametern nicht, es wird noch ein Parameter verlangt, den ich persönlich nicht so ganz einordnen kann (LPTSTR lpszMessageID). Ich habe die Parameter wie zuvor übergeben und einfach durch '' bzw. durch nil ersetzt (nun ja, man kann's ja mal versuchen), aber leider hat beides nicht geklappt. Hat jemand einen Tipp, welcher Parameter übergeben werden muss bzw. (was natürlich noch besser wäre) hat jemand ein Beispiel, wie MAPISaveMail umgesetzt wird? Danke und Gruß Opa |
Re: E-Mail mit Anhang im E-Mailclient
Entschuldigung für's pushen, aber ich habe immer noch keine Lösung gefunden ...
Noch mal kurz zur Zusammenfassung: Ich möchte eine E-Mail mit Attachment so zum E-Mailclient bringen, dass er sie entweder im Postausgang speichert, wenn der Rechner gerade offline ist, oder aber dass er sie öffnet (also quasi das, was der Mailto-Link im Browser macht, nur dass hier noch ein Attachment dazukommt). Hat jemand eine Idee? Danke und Gruß Opa |
Re: E-Mail mit Anhang im E-Mailclient
Hallo Opa,
Hast du mal versucht in der SendFileMail Methode den Aufruf der Funktion "Mapisendmail" um die Option MAPI_Dialog zu erweitern?
Delphi-Quellcode:
Gruß
case MapiSendMail(0, 0, mMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) of
Ralf |
Re: E-Mail mit Anhang im E-Mailclient
Ich habe dieses Beispiel auch ausprobiert und grundsätzlich läuft es weniger fehleranfällig als die JvMail-Komponente der JVCL.
Allerdings erzeugt die Verwendung des "MAPI_DIALOG"-Attributes die Fehlermeldung: --------------------------- Fehler --------------------------- Die Datei konnte nicht per E-Mail versendet werden! Meldung: One or more unspecified errors occurred! --------------------------- Das ist insofern schade, da ich die EMail noch nicht abschicken möchte, sondern der Anwender dies bestätigen muss. |
Re: E-Mail mit Anhang im E-Mailclient
Hi,
hier mein Code zum versenden:
Delphi-Quellcode:
Den Fehler von devidespe bekomme ich mit diesem Code nicht. Das Versenden klappt einwandfrei.
function SendFileMail(const FileName: TFileName; const Subject, BodyText, 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(RecipAdress); lpszAddress := PChar(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 := 0; lpFiles := @mlpFiles; end; case MapiSendMail(0, 0, mMessage, MAPI_DIALOG or 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; Function Mail1( Const cTo, cSubject, cMessage : String ) : Boolean ; var S: String; Begin S := SendFileMail( 'C:\test.txt', cSubject, cMessage, cTo ) ; if Length(S) > 0 then begin MessageDlg('Die Datei konnte nicht per E-Mail versendet werden!' + #10#13#10#13 + 'Meldung:' + #10#13 + S, mtError, [mbOK], 0); end; end; Ich habe jedoch ein anderes Problem. Der E-Mail Typ wird auf auf die Ziel E-Mail-Adresse gesetzt und nicht auf SMTP wie es sein müßte. Somit kommt keine Mail an. Gruß Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz