email versenden mit MAPI



  • Hallo,

    ich habe im nezt folgenden Code zum Senden von emails gefunden:

    void SendEMail(
        char *pszRecvAddress,             //Email
        char *pszTitle,                   //Mail Title
        char *pszNotes,                   //Mail Content
        char *pszFileName                 //attachment file name
    )
    {
        if ((NULL == pszRecvAddress) ||
            (NULL == pszTitle)       ||
            (NULL == pszNotes)       ||
            (NULL == pszFileName)
            )
        {
            printf("ERROR:NULL on SendEMail Function parameter!!!\n");
            return;
        }
    
        ULONG           uRetCode        = 0;
        LPMAPISENDMAIL  lpMAPISendMail  = NULL;
        HMODULE         hLibMAPI        = NULL;
        MapiRecipDesc   ReceiverInfo    = {0, MAPI_TO, "", pszRecvAddress,0, 0};
        MapiFileDesc    AttachmentInfo  = {0, 0, 0xFFFFFFFF, pszFileName,"", NULL};
        MapiMessage     MailInfo        =
            {
                0,
                pszTitle,
                pszNotes,
                NULL,
                NULL,
                NULL,
                MAPI_SENT,
                NULL,
                1,
                &ReceiverInfo,
                1,
                &AttachmentInfo
            };
    
        hLibMAPI = ::LoadLibrary("MAPI32.DLL");
        if (NULL == hLibMAPI)
        {
            printf("ERROR on Load MAPI32.DLL file!!! Cancel to auto send mail!!!\n");
            return;
        }
        lpMAPISendMail = (LPMAPISENDMAIL)::GetProcAddress(hLibMAPI,"MAPISendMail");
        if (NULL == lpMAPISendMail)
        {
            printf("ERROR on Get MAPISendMail Function Address!!! Cancel to auto send mail!!!\n");
            goto ERR_EXIT;
        }
    
        uRetCode = lpMAPISendMail(0L, 0L, &MailInfo, 0, 0);
        if (SUCCESS_SUCCESS == uRetCode)
        {
            printf(
                "Success to Send mail to: %s, Mail Title:%s, Mail Notes:%s,Attachment file name:%s\n",
                pszRecvAddress,
                pszTitle,
                pszNotes,
                pszFileName
            );
        }
        else
        {
            printf("ERROR:failed Send mail!\n");
        }
    
    ERR_EXIT:
        if (NULL != hLibMAPI)
        {
            ::FreeLibrary(hLibMAPI);
            hLibMAPI = NULL;
        }
    
        return;
    

    Kompilert wird das ganze ohne Fehler.
    Testen wollt ich so

    int main(int argc, char *argv[])
    {
        SendEMail("test@test.de","test","test text","");
    }
    

    natürlich mit einer funktionierenden emailadresse.
    Meine WIN.INI habe ich kontrolliert, da steht unter [MAIL] MAPI=1, also ist der Dienst vorhanden. Outlook meldet sich auch mit "Eine Anwendung versucht automatisch Nachrichten in ihrem Auftrag zu senden. Möchten Sie dies zulassen?"
    Wenn ich das dann mit ja bestätige bekomme ich vom Programm aber die Fehlermeldung

    ERROR:failed Send mail!

    Kann mir jemand weiterhelfen bei dem Problem!?

    Danke & Gruß


Anmelden zum Antworten