Ich habe es auch damit schon versucht aber am ende der function.
Das sollte auch gehn und die Meldung weg sein.
Nur daß dann der Compiler sagen sollte, daß der Rückgabewert von MapiSendMail umsonst an Result zugewiesen wird.
Delphi-Quellcode:
if (dwRet <> SUCCESS_SUCCESS)
then
begin
MessageBox(
Handle,
PChar('
Error while trying to send email'),
PChar('
Error'),
MB_ICONERROR
or MB_OK);
end
Eigentlich ghört das fehlende
Result := ...;
dort rein, denn hier fehlt die Zuweisung an Result, wärend es im Else-Zweig via MapiSendMail gesetzt wird.
Und nein, 0 ist hier ein total falsches Ergebnis, denn MapiSendMail (wie man im
MSDN nachlesen kann) liefert im Erfolgsfall auch eine 0. Genauer SUCCESS_SUCCESS, welche wie S_OK und NOERROR = 0 ist.
Also wenn, dann sollte man Result dort auf MAPI_E_FAILURE oder besser noch MAPI_E_LOGIN_FAILURE setzen, da es ja einen Fehler bei MapiLogon angibt.
Aber ich würde Result da auf dwRet setzen, also den "korrekten" Fehlercode. Oder dwRet gleich weglassen und direkt Result verwenden.
Und die vielen StrDispose gehören wohl eher in ein Try-Finally, also ins Finally und das Try nach dem zweiten FillChar.