"Neues EMail" Fenster öffnen mit Attachement
-
Hallo zusammen!
Ich würde gerne gerne ein "Neues Email"-Fenster öffnen, dass schon ein Attachment drin hat. Genau wie [Datei->Senden an->Mail-Empfänger]...
Ich habe es schon probiert mit shellexecute (mailto:blabla@bla.com?Subject=fjj&...) aber da kann ich kein Attachment reinfügen.
Wahrscheinlich geht es mit MAPI, aber das habe ich probiert bei msdn zu verstehen, komme aber nicht draus. Dann habe ich auch noch einen code gefunden, der sogar ein email mit attachment direkt verschickt...
Aber ich will doch nur ein Fenster , mit einem Attachment drin...
Der User muss Empfänger und text selber eingeben können...
(Genau als würde man auf eine datei im explorer klicken:
[Datei->Senden an->Mail-Empfänger]...Es muss nicht einmal schon ein Empfänger/Subject definiert sein.
Ich wäre auch sehr dankbar für eure Hilfe...
Kann denn das soooo schwer sein?
-
Wenn du nen Code hast der das Emailformular öffnet und ausfüllt musst du doch nur die Zeilen rausnehmen die den Text und den Empfänger ins Formular schreiben und den "Senden Befehl".
Poste mal bissi Code oder gib an wo du ih herhast.
Sonst isses halt schon schwer zu helfen.Oh man ich höre mich auch schon an wie jansen oder junix. Dann muss was wares dran sein.
FGGF
-
Kann ich nicht einfach einen (Datei->Senden An->Mailempfänger) klick simulieren?
Das wäre doch viel einfacher?
Der beispielcode für mit mapi ist:
http://www.bytesandmore.de/rad/cpp/snipp/sc08004.phpDanke!
-
Dann mach eine Form, eine OpenDialog wo du die Datei auswählst ein RichEdit (o.ä.)für den EmailText, ein Edit für den Empfänger. Diese liest du aus und übergibst diese der Sendfunktion.
Wenn du nur ein Emailfenster aufmachen willst dann würde ich den
weiteren Link auf http://www.personalmicrocosms.com/html/tip_mapi.html
mal anschauen. dort wird nur das Fenster geöffnet, allerdings noch ohne attachment.Wenn du es so wie bei ICQ haben willst mit Datei SendTo im Explorer direkt mit der rechten Maustaste, mmhhh. dann musste jemand anders fragen, sorry.
FGGF
-
Der Link http://www.personalmicrocosms.com/html/tip_mapi.html sieht doch schon gut zu gebrauchen aus.
Vor allem die Stellestatic MapiMessage Msg; memset(&Msg, 0, sizeof(Msg)); Msg.lpszSubject = "Put subject text here"; Msg.lpszNoteText = "Put message text here";
is doch genau richtig für dein Attachment. Wenn du in der msdn danach suchst, findest du in dem MapiMessage-Record noch ein Feld für Attachments
lpFiles
Pointer to an array of MapiFileDesc structures, each containing information about a file attachment.Wie man da nun genau eine Datei reinschreiben kann, musst du selber weiterverfolgen. Ist jedenfalls mal nen Ansatzpunkt
Cya,
CruiserP.S: Bin grad noch über was gestolpert
MapiFileDesc attachment = {0, // ulReserved, muss 0 sein 0, // keine flags, da Datei (ULONG)-1, // position unbekannt "c:\\myfile.zip", // pfadname "my_file.zip", // original dateiname NULL}; // kein MapiFileTagExt
-
Danke vielmals für euere Hilfe!
Ich bin jetzt relativ weit:
Es passiert genau das was ich will aber dann stürzt meine Applikation ab bzw. sie ist eingefroren(ich kann zwar eine addresse eingeben, aber sonst ist alles eingefroren)#include <mapi.h> void __fastcall TForm1::Button1Click(TObject *Sender) { const HINSTANCE hMAPILib = ::LoadLibrary("MAPI32.DLL"); if (hMAPILib) { typedef ULONG (FAR PASCAL *MAPIFUNC) (ULONG ulUIParam,LPTSTR lpszDelimChar,LPTSTR lpszFullPaths,LPTSTR lpszFileNames,ULONG ulReserved); MAPIFUNC MAPISendDocuments = (MAPIFUNC) GetProcAddress(hMAPILib, "MAPISendDocuments"); if (MAPISendDocuments != NULL) { MAPISendDocuments( 0,";","C:\\test.html","test.html",NULL ); } else { ShowMessage("Mapi function does not exist"); } ::FreeLibrary(hMAPILib); } else { ShowMessage("Mapi does not exist"); } }
Ich glaube das Problem ist bei MapiSendDocuments() und zwar beim ersten parameter der jetzt 0 ist. Der müsste irgend ein "PROP:Handle" sein, aber ich habe keine Ahnung was das ist. Ansonsten würde das Fenster Modal angezeigt werden glaube ich, siehe:http://www.attryde.com/clarion/col_smapi.htm
Wenn nur die Applikation danach sauber weiter laufen würde! Aber Sie bleibt knall hart stehen. Hilfe !
-
Hey zusammen
Ich habe es hingekriegt!
Als Handle muss man int(Application->Handle) benutzen:
Also hier der fertige Code:#include <mapi.h> void __fastcall TForm1::Button1Click(TObject *Sender) { const HINSTANCE hMAPILib = ::LoadLibrary("MAPI32.DLL"); if (hMAPILib) { typedef ULONG (FAR PASCAL *MAPIFUNC) (ULONG ulUIParam,LPTSTR lpszDelimChar,LPTSTR lpszFullPaths,LPTSTR lpszFileNames,ULONG ulReserved); MAPIFUNC MAPISendDocuments = (MAPIFUNC) GetProcAddress(hMAPILib, "MAPISendDocuments"); if (MAPISendDocuments != NULL) { MAPISendDocuments(int(Application->Handle),";","C:\\test.html","test.html",NULL ); } else { ShowMessage("Mapi function does not exist"); } ::FreeLibrary(hMAPILib); } else { ShowMessage("Mapi does not exist"); } }
Danke für eure Denkanstösse!
Mit besten Grüssen
Andrin
YUUUUUUUUUUPPPPIIIIIIIIIII !!!!