1

Java アプリケーションを使用して Mercury メール サーバーに接続しようとしていますが、JavaMail API を使用しています。接続が成功せず、ログに次のエラーが記録されます。

EHLO xxxx
554 HELO 形式が無効です

つまり、サーバーに接続しますが、helo 形式はサーバーが好むものではありません。私はそれをデバッグするのにうんざりしていて、JavaMail “SMTPTransport” クラスの次のコードにたどり着きました:

serverOutput.write(cmdBytes);
serverOutput.write(CRLF);
serverOutput.flush();

コードによると: private static final byte[] CRLF = { (byte)'\r', (byte)'\n' };
これは RFC 821 と一致しているようです

Windows では \n の意味が異なることはわかっていますが、これが本当に問題の原因であるかどうかはわかりません。そうでない場合、これを引き起こす原因は何ですか?メールクライアントでメールサーバーをチェックしたところ、正常に動作し、ジェームズメールサーバーでコードをチェックしたところ、正常に動作しました!

JavaMail API バージョン: 1.4.5 (最新リリース)
Mercury/32: 4.7

4

3 に答える 3

2

Google 検索を行った554 Invalid HELO formatところ、特定の Mercury の問題について大量のヒットがありました。バグです。

http://community.pmail.com/forums/thread/4136.aspx

http://www.mantisbt.org/bugs/view.php?id=9645

http://ellislab.com/codeigniter/forums/viewthread/153130/

等...

于 2012-10-16T06:46:46.573 に答える
1

サーバーのログをチェックして、実際に何が問題なのかを突き止める必要があるかもしれませんが... 試すことができることの 1 つは、mail.stmp.localhost プロパティをマシンの正しい DNS ホスト名に設定することです。デバッグ出力から、マシンが自身の名前を判別できないため、代わりに IP アドレスを送信しているように見えます。

于 2012-10-16T01:52:39.733 に答える