Wie handhaben Fehler in Messaging.sendEmail ()?
-
10-10-2019 - |
Frage
Ich schrieb Code E-Mail senden. Es funktioniert gut, aber mein Ziel ist:
Wenn jemand auf nicht vorhandene E-Mail-Adresse gesendet, mag ich das Ergebnis als ‚falsch‘ protokollieren oder ‚Versagen‘ usw. (und wenn E-Mail-Adresse gültig ist, sagen Sie einfach ‚Erfolg‘)
Ich habe versucht, zwei Dinge mit dem Code unten.
-
zur Verfügung gestellt Nicht-E-Mail-String 'foo @!'
-
bereitgestellt nicht existierende E-Mail-Adresse 'thisdoesnotexistignsdfkjsdf@gmail.com'
Ergebnis:
Ausführen Fall 1 verursachte Code in catch block
geht somit Fehlermeldung ausgibt, auf der HTML-Seite, die erwartet wird.
Ausführen Fall 2 verursachte Code zurück 'ok sent!'
Und nach wenigen Minuten erhielt ich E-Mail, dass die Lieferung nicht.
Meine Vermutung ist, SendEmailResult Objekts isSuccess () ist nicht wirklich verantwortlich für die nicht vorhandene E-Mail-Adresse zu überprüfen. Es kümmert sich nur, wenn die E-Mail ???
gebranntGibt es eine Möglichkeit zu protokollieren, wenn die E-Mail-Konto ist nicht vorhanden, so ich eine solche Gelegenheit in meinem Apex Code anmelden kann?
try {
Messaging.SendEmailResult[] resultMail = Messaging.sendEmail(new
Messaging.SingleEmailMessage[] { mail });
resultMail[0].getErrors();
//display success or error message
if (resultMail[0].isSuccess()) {
response = 'ok sent!';
} else {
response = resultMail[0].getErrors().get(0).getMessage();
}
//log
boolean isSuccess = resultMail[0].isSuccess();
Integer out = EmailLogger.logEmailSent(this, isSuccess);
} catch (System.EmailException ex) {
system.debug('============== email exception caught!!!=============');
response = ex.getMessage();
}
Lösung
E-Mail (SMTP) ist ein Speicher- und Weiterleitungsprotokoll, zum Zeitpunkt des Versands, kann man nicht sagen, dass das Ziel E-Mail-Adresse ist nicht existierend, können Sie nur das herausfinden, sobald die Nachricht tatsächlich bekommt zum Endziel Server.
Andere Tipps
Wenn es eine Möglichkeit gäbe E-Mail-Adresse zu finden, ob es wirklich existiert oder nicht, könnte ein Spammer versucht, Brute-Force-Angriff hat - jede mögliche Kombination von E-Mail versuchen und Senden unendlich Spams:)
Gott sei Dank, das ist nicht möglich.