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