2010-11-16 30 views
0

J'ai écrit un code pour envoyer un courriel. Cela fonctionne bien mais mon but est:Comment gérer les erreurs dans Messaging.sendEmail()?

Quand quelqu'un a envoyé à l'adresse électronique inexistante, je veux enregistrer le résultat comme 'faux' ou 'échec' etc. (et quand l'email address est valide, dites juste 'succès'

J'ai essayé 2 choses avec le code ci-dessous.

  1. fourni non-mail chaîne 'foo @!'

  2. a fourni l'adresse e-mail non-existante '[email protected]'

Résultat:

Exécuter cas 1 a causé un code à entrer dans catch block sortant ainsi un message d'erreur sur la page html ce qui est attendu.

Exécuter cas 2 a provoqué le code pour revenir 'ok sent!'

Et après quelques minutes, je reçu email que la livraison a échoué.

Je suppose que isSuccess() de l'objet SendEmailResult n'est pas vraiment responsable de la vérification de l'adresse e-mail non existante. Il se soucie seulement si l'email est viré ???

Existe-t-il un moyen de se connecter si le compte de messagerie n'existe pas afin que je puisse enregistrer une telle occasion dans mon code Apex?

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

Répondre

2

Email (SMTP) est un magasin et d'un protocole en avant, au moment de l'envoi, vous ne pouvez pas dire que l'adresse e-mail de destination est inexistante, vous ne pouvez constater que une fois le message se fait vers le serveur de destination finale.

+0

J'ai lu la documentation aussi et semble que la journalisation immédiate n'est pas supportée à cet effet :(Merci pour l'info. –

0

s'il y avait un moyen de trouver l'adresse e-mail si elle existe réellement ou non, un spammeur aurait tenté une attaque de force brute - d'essayer toutes les combinaisons possibles d'e-mail et l'envoi de spams infini :)

Dieu merci, ce n'est pas possible.