Emails verschicken???



  • Hallo Leute, vielleicht kann mir ja einer weiterhelfen?

    Kurz zu meinem Problem:

    Ich möchte über einen Button in einem Proggie Emails an eine festgelegte Emailadresse verschicken. D.h. auf den Button geklickt und das auf dem Rechner vorhandene Emailprogramm soll aufgerufen werden. Dabei soll der Quellcode/Button erkennen, welches Emailprogramm ich auf dem Rechner installiert habe (Outlook, usw.)und die vorher im Quellcode festgelegte Emailadresse verwenden!!!

    Kann mir da jemand weiterhelfen?



  • MSDN -> ShellExecute

    für File: mailto:ich@hier.de



  • Hi,
    etwas ausfuehrlicher sieht es so aus:

    CString strMail = "mailto: deine@adresse.de";
    ShellExecute(NULL, _T("open"),strMail,NULL,NULL, SW_SHOW);

    Gruss
    items



  • Sorry, verklickt 🤡

    [ Dieser Beitrag wurde am 17.09.2002 um 11:53 Uhr von items editiert. ]



  • So habe ich es gemacht:

    BOOL Rep::SendMail(CString czEmpfaengerAdresse, CString czFileName, CString czBetreff) {
    
        LPMAPISENDMAIL pfnSendMail;
    
        MapiRecipDesc  rdOriginator;
        MapiRecipDesc  rdRecipient[1];
        MapiFileDesc    rdFile [1];
    
        LPMAPILOGOFF   pfnLogoff;
        LPMAPILOGON    pfnLogon;
        MapiMessage    mapimsg;
        HINSTANCE      hDll;
        LHANDLE        lHnd;
    
        if(NULL == (hDll = LoadLibrary(TEXT("MAPI32.DLL")))){                               // Ist das Laden der DLL erfolgreich gewesen ?
            _tprintf(TEXT("could not load mapi32.dll, ErrorCode: %u"), GetLastError()); // Nein
            WriteToLogDatei("Die Datei \"MAPI32.DLL\" konnte nicht geladen werden");
            WriteToLogDatei("Es kann keine Datei per Email versendet werden");
            return FALSE;
        }
    
        pfnLogon    = (LPMAPILOGON)   GetProcAddress(hDll, "MAPILogon");                // Adressen der DLL-Funktionen ermitteln
        pfnLogoff   = (LPMAPILOGOFF)  GetProcAddress(hDll, "MAPILogoff");
        pfnSendMail = (LPMAPISENDMAIL)GetProcAddress(hDll, "MAPISendMail");
        pfnLogon (0, NULL, NULL, 0, 0, &lHnd);
    
        // Informationen für das Email-System
        mapimsg.ulReserved          = 0;                                                            // Muss 0 sein
        mapimsg.lpszSubject         = (char*) (LPCTSTR) czBetreff;                      // Betrefftext
        mapimsg.lpszNoteText        = "Dieses Email wurde automatisch verschickt";  // Mailtext
        mapimsg.lpszMessageType     = NULL;
        mapimsg.lpszDateReceived    = NULL;                                                     // Empfangsdatum (YYYY/MM/DD HH:MM)
        mapimsg.lpszConversationID  = NULL;
        mapimsg.flFlags             = 0;
        mapimsg.lpOriginator        = &rdOriginator;                                            // Senderinformationen
        mapimsg.nRecipCount         = 1;                                                        // Anzahl der Empfänger-Infos
        mapimsg.lpRecips            = rdRecipient;                                          // Empfängerinformationen
        mapimsg.nFileCount          = 1;                                                            // Anzahl der angehängten Files
        mapimsg.lpFiles             = rdFile;                                                   // Array mit den File-Infos
    
        // Informationen über den Sender der Nachricht
        rdOriginator.ulReserved     = 0;                                                            // Muss 0 sein
        rdOriginator.ulRecipClass   = MAPI_ORIG;                                                // Gibt an ob der Sender als "An", "CC:" oder "BCC" gesetzt werden soll (MAPI_ORIG, MAPI_TO, MAPI_CC, MAPI_BCC)
        rdOriginator.lpszName       = "Programm";                                               // Antwortname
        rdOriginator.lpszAddress    = "not@viable.com";                                     // Antwortadresse
        rdOriginator.ulEIDSize      = 0;
        rdOriginator.lpEntryID      = NULL;
    
        // Informationen über den Empfänger der Nachricht
        rdRecipient[0].ulReserved   = 0;                                                            // Muss 0 sein
        rdRecipient[0].ulRecipClass = MAPI_TO;                                                  // Gibt an ob der Empfänger als "An", "CC:" oder "BCC" gesetzt werden soll (MAPI_ORIG, MAPI_TO, MAPI_CC, MAPI_BCC)
        rdRecipient[0].lpszName     = (char*) (LPCTSTR) czEmpfaengerAdresse;            // Text wird im Feld "An:" angezeigt
        rdRecipient[0].lpszAddress  = (char*) (LPCTSTR) czEmpfaengerAdresse;            // Emailadresse des Empfängers ("SMTP:michael.kuenzler@ateg-online.de")
        rdRecipient[0].ulEIDSize    = 0;
        rdRecipient[0].lpEntryID    = NULL;
    
        // Informationen über das angehängte File
        rdFile[0].ulReserved = 0;                                                                   // Muss 0 sein
        rdFile[0].flFlags = 0;
        rdFile[0].nPosition = 1;
        rdFile[0].lpszPathName = (char*) (LPCTSTR) czFileName;                          // Datei die versendet werde soll (Pfad und Dateiname)
        rdFile[0].lpszFileName = (char*) (LPCTSTR) czFileName;                          // Bezeichnung die unter dem File in dem Email angegeben wird
        rdFile[0].lpFileType = NULL;
    
        //pfnSendMail(lHnd, NULL, &mapimsg, MAPI_DIALOG, 0);
    
        if (!pfnSendMail(lHnd, NULL, &mapimsg, 0, 0) == SUCCESS_SUCCESS)                // War das Versenden erfolgreich ? (Empfängeradresse wird nicht auf Gültigkeit geprüft)
            WriteToLogDatei ("Email wurde versendet an: \"" + czEmpfaengerAdresse + "\"");
        else
            WriteToLogDatei ("Es trat ein Fehler beim Versenden der Email auf");
    
        pfnLogoff(lHnd, 0, 0, 0);
        FreeLibrary(hDll);                                                                          // DLL freigeben
    
        return TRUE;
    }
    

    Gruß Michael

    [ Dieser Beitrag wurde am 17.09.2002 um 12:19 Uhr von M_kuenzler editiert. ]



  • SChau mal bei Codeguru. Dort gibt es zuhauf SMTP-Klassen welche funktionieren.



  • ich nehm immer eine Hyperlink-Klasse von codeproject
    da sind dann ganz gewöhnliche Links auf der Oberfläche



  • Wenn man ein Festgelegtes EMAIL versenden will, dann sollte man nicht ein EMAILPROGRAM aufrufen. Was wäre wenn keines installiert ist. Oder eines welches sich so nicht aufrufen läßt.



  • Original erstellt von Unix-Tom:
    Wenn man ein Festgelegtes EMAIL versenden will, dann sollte man nicht ein EMAILPROGRAM aufrufen. Was wäre wenn keines installiert ist. Oder eines welches sich so nicht aufrufen läßt.

    Ja genau, so möchte ich es auuch...
    Emails OHNE Hilfe eines Emailprogramms versenden können...
    sionst macht es ja keinen sinn, wenn das EMAIL PROGGY eh geöäffnet wird! oder?



  • Naja, habs bisher immer nur für Info-Dialogfelder benützt und da reciht der einfache Link auch 😉



  • Genau. Und das ist auch genau das, was chappa70 wollte.



  • chappa70 wollte das zwar aber wir sind ja auch dazu da ihm andere Ideen zu liefern um ein programm Anwenderfreundlicher und/oder besser zu machen.



  • Guck mal hier
    Lad dir die Klasse runter,
    ist super einfach to use...erklärung steht da auch bei (inkl. beispeil)
    kann man nix falsch machen...


Log in to reply