2 votes

550 Accès refusé - Nom HELO non valide

J'utilise l'API apace common mail pour l'envoi d'emails html. Voici mon code.

public void sendHTMLMail(String to, String subject, String message , String from) throws EmailException
    {

          HtmlEmail email = new HtmlEmail();
          email.setHostName(SMTP_HOST_NAME);
          email.addTo(to);
          email.setFrom(from, "just-flick");
          email.setSubject(subject);
          email.setSmtpPort(25);
          email.setHtmlMsg(message);
          email.setTextMsg("Your email client does not support HTML messages");
          email.send();

    }

Mais en exécutant le programme, j'obtiens l'erreur suivante.

Exception in thread "main" org.apache.commons.mail.EmailException: Sending the e
mail to the following server failed : mail.just-flick.com:25
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
    at org.apache.commons.mail.Email.send(Email.java:1267)
    at bseller.mail.SendMail.sendHTMLMail(SendMail.java:105)
    at bseller.mail.SendMail.main(SendMail.java:31)
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 550 Access denied - Invali
d HELO name (See RFC2821 4.1.1.1)

    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
    at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
    at javax.mail.Transport.send0(Transport.java:169)
    at javax.mail.Transport.send(Transport.java:98)
    at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 3 more

Veuillez m'aider à configurer ce problème.

Merci

4voto

J'ai rencontré le même problème, et quand j'ai passé le nom de l'hôte du client, tout est devenu correct. J'ai ajouté cette ligne dans mon code :

props.put("mail.smtp.localhost", client or host name which connect to mail server);

Bonne chance :)

2voto

David Schwartz Points 70129

Cette opération doit être gérée par l'administrateur de votre serveur de messagerie, et non par vous. Adressez-vous à la personne qui vous a demandé de vous connecter à ce serveur de messagerie.

2voto

Hontvári Levente Points 1202

Peut-être que cela vous aidera :

email.getMailSession().getProperties().setProperty("mail.smtp.localhost", "www.example.com");

Bien entendu, remplacez www.example.com par le nom de domaine de votre hôte à partir duquel vous envoyez le courrier.

Cependant, comme l'a écrit David Schwartz, votre configuration de messagerie n'est pas non plus parfaite. Aujourd'hui, nous ne soumettons pas les courriers électroniques au port 25. Le port 587 est utilisé pour la soumission, qui a des règles plus souples, bien qu'il puisse être nécessaire de vous authentifier si votre adresse IP n'est pas en liste blanche. Suivez le lien qui a été donné par pst dans son commentaire.

Il est étrange que JavaMail seul fonctionne, alors qu'Apache Commons Email ne fonctionne pas, car je suppose que Commons Email utilisait également JavaMail. Cela peut indiquer un bogue quelque part, mais cela nécessiterait une enquête plus approfondie.

L'un de vos problèmes est que vous ne connaissez pas le nom exact du HELO que vous envoyez. Le code suivant peut vous aider à le déterminer, sinon appelez votre administrateur de messagerie (notamment parce qu'il peut vous conseiller sur le port 587).

email.getMailSession().setDebug(true);

0voto

Prateek Mehta Points 152

I

spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X