2011-03-29 281 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服务器。