Mail mit Anhang über standard Mail Programm
-
Hallo zusammen,
ich möchte aus meinem Programm heraus (einzelne oder mehrere) Texte bzw. Grafiken als E-Mail versenden.
Das Ganze soll ähnlich funktionieren wie mit dem Menü "Senden an"->"E-Mail-Empfänger".
Soll heißen, ich übergebe dem Mail-Programm nur meine Dateien als Anhang (evtl noch den Betreff und eine Beschreibung der angehängten Dateien). Die Empfängeradresse soll per Hand im E-Mail-Programm eingetragen werden.Mit mailto per shellexecute komme ich nicht weiter, da ich keine Dokumentation gefunden habe, wie (sofern überhaupt möglich) man dort Dateianhänge übergeben kann.
Für hilfreiche Tipps danke ich schonmal im Vorraus
-
Bitte die Suchfunktion hier benutzen, Stichwort MAPI.
-
Hallo Jansen,
ich denke, du hast mich mißverstanden.
Mein Programm soll keine Mails selbst versenden!
Lediglich ein Fenster a la "Neue Mail schreiben" öffnen und meine Dateien im Anhang haben.MapiSendMail benötigt einen Empfänger.
Dieser soll jedoch erst im Mail-Programm eingetragen werden, nicht in meinem Programm.
-
Ja und geanu dafür gibt es die MAPI...
-
Ich denke du meinst das hier:
mailto:test@domain.com?attachment="D:\mytext.txt"
ShellExecute(Form1->Handle,"open","mailto:test@domain.com?attachment=\"D:\mytext.txt\"",NULL,NULL,SW_SHOW);
Diese Funktion sorgt dafür, dass das Nachricht-Senden-Fenster deines EMail-Programmes aufgerufen wird und die EMail-Adresse und die angehängte Datei dort drin stehen.
Wobei ich nicht ganz sicher mit dem Anhang bin, da es nicht mit jedem EMail-Programm funktioniert. Ich meine es geht nur bei Outlook, Thunderbird ignoriert es einfach.
Also, einfach mal testen und Bescheid geben...
Gruß
Hawk
-
Hallo
Die ShellExecute-Variante hat außerdem den Nachteil, das der Aufruf nur begrenzt viele Zeile verarbeiten kann.
Diese Probleme werden mit MAPI umgangen. Hier findest du ein Beispiel.bis bald
akari
-
Guten Morgen,
nach vielen Seiten mit mehr oder weniger hilfreichen Informationen sieht es wie folgt aus:
Shellexecute funktioniert bis auf das Anhängen von Dateien.
@Hawkxxx
Hier wird gesagt, dass es keinen offiziellen Weg gibt und es vom Mailclient abhängt:
http://msdn.microsoft.com/en-us/library/aa767737.aspx
(letzter Kommentar)Mit mapi hab ich so meine Sorgen.
MAPISendDocuments ist die Funktion meiner Wahl.
Mein C-Builder 2010 mit einem link error um die Ecke kommt.
"Nicht auflösbares externes MAPISendDocuments referenziert von ..."
Die mapi.h habe ich eingebunden
Die mapi32.lib habe ich einmal aus dem Standardpfad eingebunden und einmal in mein Projektverzeichnis kopiert und eingebunden. Beides jedoch ohne Erfolg.Die DLl einzubinden scheitert an meiner Unwissenheit und erfolglosem googeln
-
Hallo
In dem von mir verlinkten Beispiel kommt keine Funktion namens MAPISendDocuments vor
bis bald
akari
-
akari schrieb:
Hallo
In dem von mir verlinkten Beispiel kommt keine Funktion namens MAPISendDocuments vor
bis bald
akariHallo akari,
das von dir genannte Beispiel habe ich jetzt mal getestet (dachte erst, dass es die gleiche Funktion wie in der msdn beschrieben ist...) und sie funktioniert. Leider geht sie zu weit. Mein Programm soll die E-Mail nicht selbst versenden sondern lediglich das "Neue-E-Mail"-Fenster öffnen.
Die MAPISendDocuments Funktion ist hier beschrieben http://msdn.microsoft.com/en-us/library/dd296731%28v=vs.85%29.aspx
Gruß und Dank an alle
-
Hallo
Mein Programm soll die E-Mail nicht selbst versenden sondern lediglich das "Neue-E-Mail"-Fenster öffnen.
Korrektur : Über die Flags von MAPISendMail kannst du den Versenden-Dialog erzwingen.
bis bald
akari
-
akari schrieb:
Hallo
Korrektur : Über die Flags von MAPISendMail kannst du den Versenden-Dialog erzwingen.
bis bald
akarigenauso ist es.
blRetVal = (*pfMapiSendMail)(hSession,0,&MapiMsg, MAPI_LOGON_UI ,0) == SUCCESS_SUCCESS;
ändern in
blRetVal = (*pfMapiSendMail)(hSession,0,&MapiMsg, MAPI_DIALOG ,0) == SUCCESS_SUCCESS;
Damit wäre mein Problem gelöst.
Besten Dank an alle Beteiligten und ein schönes Wochenende