web-dev-qa-db-fra.com

comment résoudre une exception d'adresse non valide

Nous avons essayé d'envoyer du courrier en utilisant javax.mail. Lors de l'envoi des mails nous avons eu l'exception suivante:

    **sendMail - Message Sending Failed: Invalid Addresses;
    nested exception is: 
javax.mail.SendFailedException: 550 #5.1.0 Address rejected.2013-02-28 13:17:08,236** 

Quel pourrait être le problème?

8
user2060679

Cela signifie que le serveur de réception ne reconnaît pas la boîte aux lettres (la partie précédant le «@») de l'adresse de messagerie. Il se peut qu’il ait été mal orthographié, qu’il s’agisse simplement d’un nom inexistant ou même que le serveur destinataire soit configuré pour rejeter un message (spam, par exemple) en répondant avec le code 550.

Voici l'une des nombreuses pages qui résument les codes de réponse SMTP et fournit des liens vers divers RFC pertinents:  http://www.greenend.org.uk/rjk/tech/smtpreplies.html.

EDIT: Il me faut un peu plus d’espace pour répondre à votre question que ne le permettent les commentaires.

@RaghuKing, si vous regardez la Javadoc pour javax.mail.SendFailedException, vous remarquerez que vous pouvez appeler 3 méthodes sur un tel objet exception (à l'intérieur du bloc catch):

  • getInvalidAddresses() pour obtenir un tableau d'adresses non valides et donc non envoyées à,
  • getValidSentAddresses() pour obtenir un tableau d'adresses auxquelles ce message a été envoyé avec succès, et
  • getValidUnsentAddresses() pour obtenir un tableau d'adresses valides mais auxquelles le message n'a pas été envoyé. 

(Évidemment, si l’on envoie un message à plusieurs destinataires, certains peuvent réussir et d’autres échouer, mais l’exception est levée s’il ya au moins un échec, quel que soit le nombre de succès. Évidemment, même si vous n’envoyez qu’une seule adresse, vous aura cette seule adresse dans un seul de ces tableaux et ne sera probablement PAS dans la liste ValidSent .

Ces tableaux vous donneront plus d'informations sur la gestion de l'exception, en fonction du type de tableau dans lequel se trouve une adresse. Cela dépend évidemment de votre application, mais il peut s'agir de suggestions raisonnables:

  • Adresses non valides : indique à l'utilisateur que le message n'a pas été envoyé car l'adresse était incorrecte, pour chaque adresse non valide de la liste, et fournit un moyen de corriger l'adresse, puis d'essayer de renvoyer à l'adresse correcte ( ou annuler si l'utilisateur ne fournit pas une adresse différente);
  • Adresses envoyées valides : ne pas renvoyer;
  • Adresses non envoyées valides : Essayez de renvoyer à ces adresses. L'envoi s'est probablement arrêté avant d'arriver à ces adresses en raison d'une adresse incorrecte antérieure.

Mais à la fin, c’est à vous d’appliquer le bon sens et d’expérimenter un peu les fonctions que vous ne comprenez pas tant que vous ne les avez pas comprises.

12
fr13d

Avait connu cette même exception. J'ai réalisé que je ne pouvais pas envoyer de courrier électronique à des utilisateurs inconnus. Après consultation, j'ai découvert que notre serveur SMTP n'était pas un serveur de relais de messagerie ouvert en lecture Open mail Relay .

0
kabugima2