2011-03-29 141 views
1

我在發送java郵件時在centOS服務器上遇到問題。獲得以下例外。通過Java發送郵件

javax.mail.MessagingException的:無法連接到SMTP主機:本地主機,端口:25,響應:-1


我從命令提示使用下面的命令和我郵件如預期。

echo "testing" | mail -s"test subject" [email protected] 

從maillog中的相關條目,看起來像這樣...

Mar 28 20:13:16 postfix/smtpd[10120]: fatal: no SASL authentication mechanisms 
Mar 28 20:13:17 postfix/master[28163]: warning: process /usr/libexec/postfix/smtpd pid 10120 exit status 1 
Mar 28 20:13:17 postfix/master[28163]: warning: /usr/libexec/postfix/smtpd: bad command startup -- throttling 
Mar 28 20:26:22 postfix/smtpd[11001]: warning: SASL: Connect to private/auth failed: Connection refused 

如何解決該問題?

+1

你的代碼是什麼樣的? – charisis 2011-03-29 07:50:26

+0

我認爲您的應用程序缺少SMTP配置。它正試圖連接到您的機器上安裝的SMTP服務器。因此,如果你想這樣做,在你的機器上安裝一個SMTP服務器,或者改變配置連接到一些SMTP服務器,如谷歌,雅虎等。 – hhbarriuso 2011-03-29 07:59:04

+0

@hhbarriuso顯然,他安裝了Postfix。 @shantanuo你知道你既不需​​要本地服務器也不需要一些sendmail實現? – sfussenegger 2011-03-29 08:07:30

回答

0

從日誌條目

Mar 28 20:13:16 postfix/smtpd[10120]: fatal: no SASL authentication mechanisms 

我懷疑問題是後綴,其中我不是專家。谷歌搜索「致命的:沒有SASL認證機制」提供了很多有趣的鏈接:也許看看herehere

0

從例外情況看,它似乎無法連接到主機。

你試過telnet的東西嗎?

還有一件事要檢查,是否IP名稱解析正確發生。如果不是,您可以直接使用IP代替主機來查看會發生什麼。

+0

如果他無法連接,則後綴日誌中不會有任何條目。 – sfussenegger 2011-03-29 08:05:09

0

你的smtp服務器需要認證嗎? 似乎是這樣,因爲使用郵件的cmd調用起作用。在默認的postfix配置下,本地用戶可以發送郵件而無需驗證。而且您的Java應用程序可能不是此主機上的註冊系統用戶。

嘗試在您的代碼中提供用戶名和密碼以登錄到smtp服務器。