"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.php

    Danke!



  • 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 Stelle

    static 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,
    Cruiser

    P.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 !!!! 😋 😋 😋


Anmelden zum Antworten