Email mit !C! Senden



  • Hi all,
    ich würde gerne ein Programm schreiben, was mit ANSI C geschrieben ist, und eine Email sendet.

    Ich habe erst ein Thread in ANSI C aufgemacht aber hier hätte es wohl hingehört, naja ich kanns ja nich verschieben und meiner Bitte dies zu tun wurde auch keine Folge geleistet 😉

    Ja ich habe mir jetzt mal eine gmx Emailadresse zugelegt und würde gerne zu dieser Emailadresse eine Email senden, und da soll als absender z.B. hans@diet.er stehen.

    Ich habe hier meinen code

    //INTERNET
    
    #include <windows.h>
    #include <mapi.h>
    #include <tchar.h>
    #include <stdio.h>
    
    #define NUM_ELEMENTS(x)  (sizeof((x)) / sizeof((x)[0]))
    
    int main(void)
    {
      LPMAPISENDMAIL pfnSendMail;
      MapiRecipDesc  rdOriginator;
      MapiRecipDesc  rdRecipient[1];
      LPMAPILOGOFF   pfnLogoff;
      LPMAPILOGON    pfnLogon;
      MapiMessage    mapimsg;
      HINSTANCE      hDll;
      LHANDLE        lHnd;
      int ret;
    
        if(NULL == (hDll = LoadLibrary(TEXT("MAPI32.DLL"))))
        {
            _tprintf(TEXT("could not load mapi32.dll, ErrorCode: %u"), GetLastError());
            return(0);
        }
    
        pfnLogon    = (LPMAPILOGON)   GetProcAddress(hDll, "MAPILogon");
        pfnLogoff   = (LPMAPILOGOFF)  GetProcAddress(hDll, "MAPILogoff");
        pfnSendMail = (LPMAPISENDMAIL)GetProcAddress(hDll, "MAPISendMail");
    
        ret = pfnLogon(0, "SyD\0", NULL, 0, 0, &lHnd);
    	if( ret )
    		printf( "\npfnLogon<%d>\n", ret );
    
        mapimsg.ulReserved          = 0;
        mapimsg.lpszSubject         = "This is a test";
        mapimsg.lpszNoteText        = "This is the text";
        mapimsg.lpszMessageType     = NULL;
        mapimsg.lpszDateReceived    = NULL;
        mapimsg.lpszConversationID  = NULL;
        mapimsg.flFlags             = 0;
        mapimsg.lpOriginator        = &rdOriginator;
        mapimsg.nRecipCount         = NUM_ELEMENTS(rdRecipient);
        mapimsg.lpRecips            = rdRecipient;
        mapimsg.nFileCount          = 0;
        mapimsg.lpFiles             = NULL;
    
        rdOriginator.ulReserved     = 0;
        rdOriginator.ulRecipClass   = MAPI_ORIG;
        rdOriginator.lpszName       = "SyD@gmx.de";
        rdOriginator.lpszAddress    = "SMTP:SMARTyourDisk12@gmx.de";
        rdOriginator.ulEIDSize      = 0;
        rdOriginator.lpEntryID      = NULL;
    
        rdRecipient[0].ulReserved   = 0;
        rdRecipient[0].ulRecipClass = MAPI_TO;
        rdRecipient[0].lpszName     = "SyD@gmx.de";
        rdRecipient[0].lpszAddress  = "SMTP:SMARTyourDisk@gmx.de";
        rdRecipient[0].ulEIDSize    = 0;
        rdRecipient[0].lpEntryID    = NULL;
    
        ret = pfnSendMail(lHnd, 0, &mapimsg, 0, 0);
    	if( ret )
    		printf( "\npfnSendMail<%d>\n", ret );
    
        ret = pfnLogoff(lHnd, 0, 0, 0);
    	if( ret )
    		printf( "\npfnLogoff<%d>\n", ret );
    
        FreeLibrary(hDll);
    
    	system("pause");
    
    	return(0);
    }
    

    man beachte: ist nicht von mir entworfen, ich will nur testen ob das überhaupt machbar ist, danach werde ich alles kommentieren bis ichs peile 😉 wobei dass ja noch geht.

    Also was bei gmx ankommt ist "Absender: meine.richtige@email.adresse" und da soll ja eigentlich SMARTyourDisk@gmx.de stehen oder!?



  • bitte closen. << hat sich erledigt, diese funktionalität wird weiterhin genutzt



  • Welche "Funktionalität"?? Scheint als könne man so aber keine
    Attachments mitsenden?



  • Doch kann man,

    mapimsg.nFileCount          = 0;//<<anzahld der Dateien
    		    mapimsg.lpFiles             = NULL;//<<Dateiliste[wie genau das geht, ka]
    

    Ich hatte gehoft man kann anders als über WinAPI senden, also ohne MAPI zumindest.
    Aber erstmal funktionierts, das problem ist jetzt wo anders, hat mit dieser Funktionalität nichts zu tun.

    Danke an alle die mir geholfen haben.


Anmelden zum Antworten