1

JavaMail API を使用して電子メールを送信しようとすると、現在問題に直面しています。アプリケーションコンソールから得られる例外は次のとおりです。

"javax.mail.MessagingException: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)"

ちなみに、私はすでに mail.smtp.auth プロパティを true に設定しています: props.put("mail.smtp.auth", "true") ですが、それでも失敗します。または前に同様の問題に直面していますか?

4

2 に答える 2

1

交換

props.put("mail.smtp.auth", true); 

props.put("mail.smtp.auth", "true");

そしてそれは動作します:)

于 2010-03-02T04:14:09.513 に答える
1

550 エラーは、送信元のホスト名を元の IP アドレスに逆変換できない場合に、SMTP サーバーから返されることがよくあります。これにより、メールサーバーは、送信側クライアントが誰であるかを少し認証できます。残念ながら、多くのテスト クライアント (特に NAT デバイスの背後にあるシステム) は、どの名前にもマップされない元の IP アドレスを持っています。

たとえば、これを入力しているマシンの IP アドレスは 192.168.1.103 であり、私のホスト名は so.example.myhouse である可能性があります。これは、私のルーターが私のデスクからのパケットが (たとえば) 69.59.196.211から来ているように装うためです。は私の WAN アドレスです。ただし、props.put("mail.from", "me@so.example.myhouse")SMTP サーバーを使用すると、DNS ルックアップが試行され、架空のホスト名 (つまり、グローバル DNS が知らないホスト名) に対して明らかに失敗する可能性があります。

69.59.196.211 にマッピングされる DNS 名 (例: stackoverflow.com) を使用した場合でも、SMTP サーバーは逆引き DNS ルックアップを実行して、211.196.59.69.in-addr.arpa が stackoverflow.com にマッピングされることを確認する場合があります。それが失敗した場合、SMTP サーバーはあなたをスプーファーと見なし、550 を返す可能性があります。

最後に、送信クライアントまたはその IP アドレス ブロック内のすべてのホストが、制御できない理由で SMTP サーバーによってブラックリストに登録される可能性があります。

おそらく投稿したいよりも多くのコンテキスト (有罪のクライアントとサーバーの名前とアドレス) がなければ、Java とは無関係の SMTP/DNS の問題であるとは確信できないため、それらのビットを自分で確認する必要があります。Java を完全にスキップしてtelnet smtp-servername 25、自分でサーバーに話しかけることができます。試してみると、 RFC 2821が役立つことがわかります。

于 2010-03-01T04:26:19.573 に答える