[C++] E-mail versenden

Also hier ist mein Code vllt hat ja einer ne Ahnung warum das mit der Mail nicht funzt.
Code:
int _tmain(void)
{
   LPMAPISENDMAIL pfnSendMail;
   MapiRecipDesc  rdOriginator;
   MapiRecipDesc  rdRecipient[1];
   LPMAPILOGOFF   pfnLogoff;
   LPMAPILOGON    pfnLogon;
   MapiMessage    mapimsg;
   HINSTANCE      hDll;
   LHANDLE        lHnd;
   MapiFileDesc   mapifiledesc[2];

   if(NULL == (hDll = LoadLibrary(TEXT("mapi32.DLL"))))
   {
       printf(TEXT("could not load mapi32.dll, ErrorCode: %u"), GetLastError());
       return(0);
   }

// Die Funktionen aus der DLL holen
   pfnLogon    = (LPMAPILOGON)GetProcAddress(hDll, "MAPILogon");
   pfnLogoff   = (LPMAPILOGOFF)GetProcAddress(hDll, "MAPILogoff");
   pfnSendMail = (LPMAPISENDMAIL)GetProcAddress(hDll, "MAPISendMail");

   pfnLogon(0, NULL, NULL, 0, 0, &lHnd); // Einloggen

   mapimsg.ulReserved   = 0;
   mapimsg.lpszSubject  = "Subject";
   mapimsg.lpszNoteText = "text"; // EMailtext
   mapimsg.lpszMessageType    = NULL;
   mapimsg.lpszDateReceived   = NULL;
   mapimsg.lpszConversationID = NULL;
   mapimsg.flFlags      = 0;
   mapimsg.lpOriginator = &rdOriginator;
   mapimsg.nRecipCount  = 1;
   mapimsg.lpRecips     = rdRecipient;
   mapimsg.nFileCount   = 2; //2 Dateien anhängen
   mapimsg.lpFiles      = &mapifiledesc[0];

   rdOriginator.ulReserved   = 0;
   rdOriginator.ulRecipClass = MAPI_ORIG;
   rdOriginator.lpszName     = "name";
   rdOriginator.lpszAddress  = "e mail adresse"; // Sender
   rdOriginator.ulEIDSize    = 0;
   rdOriginator.lpEntryID    = NULL;

   rdRecipient[0].ulReserved   = 0;
   rdRecipient[0].ulRecipClass = MAPI_TO;
   rdRecipient[0].lpszName     = "name"; // Empfängername
   rdRecipient[0].lpszAddress  = "e mail adresse"; // Empfängeradresse
   rdRecipient[0].ulEIDSize    = 0;
   rdRecipient[0].lpEntryID    = NULL;

   mapifiledesc[0].ulReserved   = 0;
   mapifiledesc[0].flFlags      = 0;
   mapifiledesc[0].nPosition    = 0;
   mapifiledesc[0].lpszPathName = "datei"; // Die erste Datei
// so heisst die Datei im Anhang des EMails
   mapifiledesc[0].lpszFileName = "Datei"; 
   mapifiledesc[0].lpFileType   = 0;

// Für die 2te Datei kann man sich dann hierauf beschränken:
   mapifiledesc[1].ulReserved   = 0;
   mapifiledesc[1].flFlags      = 0;
   mapifiledesc[1].nPosition    = 0;
   mapifiledesc[1].lpszPathName = "datei"; // Die zweite Datei
   mapifiledesc[1].lpszFileName = "datei";
   mapifiledesc[1].lpFileType   = 0;

   pfnSendMail(lHnd, 0
   , &mapimsg, 0
   , 0); // Das eigentliche Versenden

   pfnLogoff(lHnd, 0, 0, 0); // Ausloggen

   FreeLibrary(hDll);

   return(0);
}
 
wen nich des wüsste es gibt keine fehlermeldungen beim kompilieren das einzige was nich geht ist das die mail gar nich versand wird
 
Was bekommst du von SMTP Server als Antwort ?

"Normalerweise" muss man sich authetifizieren ( SMTP AUTH ) oder voher ein pop3 login, die meisten Provider wollen so verhindern, dass man Spam Mails verschickt.
 
und wie authetifizieren ich mich beim provider ?

Mit deinem Benutzernamen und Passwort. Mach doch einfach ne Telnet Verbindung zum POP3 Server auf ( lese notfalls das RCF über POP3 ) und du siehst was du als Antwort bekommst und was du ihm schicken musst ( Es sind 3 recv() und 2 send() )

en bsp code wäre vllt von vorteil

Wäre es , aber ich habe momentan leider keine Lust es zu programmieren. Es ist ein einfacher Client ( pronix und dann Netzwerkprogrammierun ).
 
wie man in seinem code sieht, arbeitet er aber mit einer mapi-session... das heißt, dass die daten etc von der mapi32.dll oder ähnlich automatisch beim senden an den server übertragen werden. eventuell mal ein konto einrichten bei outlook. ohne das gehts nämlich nicht...
 
Zurück
Oben