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; }