我正在嘗試使用Java應用程序連接到Mercury郵件服務器,並且正在使用JavaMail API。該連接不成功,我在日誌中收到此錯誤:Mercury郵件服務器的JavaMail API連接錯誤
EHLO XXXX
554無效HELO格式
這意味着它連接到服務器,但直升機格式是不是喜歡斷絕東西。我已經厭倦了調試它,並且我在JavaMail「SMTPTransport」類中得到了以下代碼:
serverOutput.write(cmdBytes);
serverOutput.write(CRLF);
serverOutput.flush();私人靜態最終字節[] CRLF = {(byte)'\ r',(byte)'\ n'};}}
這似乎符合RFC 821
我知道在Windows \ n有不同的含義,如果不是,那麼可能會導致這種情況? 我與郵件客戶端檢查郵件服務器,它工作正常,我檢查與詹姆斯郵件服務器的代碼,它也工作正常!
的JavaMail API版本:1.4.5(最新版本)
汞/ 32:4.7
如何配置了關於驗證客戶端的主機名水星服務器? EHLO的參數應該是客戶端的fqdn(但如果沒有fqdn可用,可以是客戶端的IP)。 Mercury服務器可能被設置爲驗證客戶端上的反向DNS和/或拒絕不可路由的客戶端地址。最好的選擇是使用Wireshark從工作客戶端捕獲一個會話,並與失敗的會話進行比較。 –
另外,'serverOutput'的編碼定義是什麼?如果它不是二進制的,那麼你實際上可能正在發送CR-CR-LF,這可能是一個問題。 –
關於serverOutput我不確定它是如何工作的我不能進入源代碼,因爲我提到它是JavaMail API包的一部分,但我同意你的觀點,並在我的帖子中提到我懷疑這個CRLF可能是CR CR LF如你所說 –