2011-12-17 16 views
2

私はhtml電子メールを送信するためにapace共通メールAPIを使用しています。以下は私のコードです。550アクセスが拒否されました - 無効なHELO名

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

    } 

しかし、プログラムの実行中に次のエラーが発生しています。

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 

この問題を構成する際にご協力ください。

おかげ

+2

あなたは正しくサーバに挨拶していませんでした:( –

+0

こんにちは、ありがとうございます、このために私を助けてください。私はSMTPサーバ設定のために新規です。 – Pedantic

+1

おそらく*少し*関連http://stackoverflow.com/questions/4934373/無効なhelo-name-in-javamail –

答えて

1

はこれがないあなたによって、メールサーバーの管理者が処理する必要があります。そのメールサーバーに接続するように指示した人に話してください。

+0

しかし、通常のJava APIを使用しているときに正常に動作しますが、Apacheの共通メールAPIを使用しているときは動作しません。私がする必要があるいくつかの追加構成についてはかなり確信しています。しかし、どのような設定がわからない。ありがとう – Pedantic

+0

メールサーバーの管理者にはわかります。これはあなたのアクセスを拒否するメールサーバーです。 –

1

多分これが役立ちます。もちろん

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

は、あなたがメールを送信するところから、あなたのホストのドメイン名とwww.example.comを交換してください。

しかし、David Schwartz氏が書いたように、メールの設定も完璧ではありません。今や私たちはポート25にメールを提出しません。あなたのIPアドレスがホワイトリストに載っていない場合、自分自身を認証する必要があるかもしれませんが、ポート587はよりリラックスしたルールを持つサブミッションに使用されます。彼のコメントでpstによって与えられたリンクに従ってください。

私はCommons EmailもJavaMailを使用していたと思うので、Apache Commons Emailはそうではありませんが、JavaMailだけで動作するのは奇妙です。これはどこかにバグを示しているかもしれませんが、それ以上の調査が必要です。

あなたの問題の1つは、あなたが送信している正確なHELO名がわからないことです。次のコードはそれを判断するのに役立ちます。そうでなければあなたのメール管理者に電話してください(特に彼がポート587であなたにアドバイスするかもしれないので)。

 
email.getMailSession().setDebug(true); 
3

私は同じ問題に直面してきた、と私は、クライアントのホスト名を渡すとき、すべてが私は自分のコードに次の行を追加しました OKになった:

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

グッドラック:)

関連する問題