Mail versenden?



  • Hallo

    Vielleicht kann mir jemand helfen. Das Beispiel ist aus der FAQ. Es funktioniert manchmal und dann wieder nicht, obwohl nichts geändert wurde. Unter NT4.0 oder W2000 ist es das gleiche (ausser, daß unter W2k das Fenster mit der Meldung kommt, daß ein anderes Programm versucht e-mails zu versenden, kann man das unterdrücken?)

    Beim Laden der Mapi32.dll meckert das Programm nicht, zumindest das scheint immer zu funktionieren.

    😞

    BOOL 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
            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          = 0;                     // 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    = "lc@test.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)
        {
            cout << "Mail wurde nicht versendet";
        }// War das Versenden erfolgreich ? (Empfängeradresse wird nicht auf Gültigkeit geprüft)
        else
        {
            cout << "Hurra, Hurra!";
        }
    
        pfnLogoff(lHnd, 0, 0, 0);
        FreeLibrary(hDll);   
    
        return TRUE;
    }
    

Anmelden zum Antworten