我正在尝试使用Java应用程序连接到Mercury邮件服务器,我正在使用JavaMail api。连接不成功,我在日志中收到此错误:
EHLO x.x.x.x
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(最新版本)
水星/ 32:4.7
答案 0 :(得分:2)
我在554 Invalid HELO format
上进行了Google搜索,并对您的特定水星问题进行了大量点击。这是一个错误。
http://community.pmail.com/forums/thread/4136.aspx
http://www.mantisbt.org/bugs/view.php?id=9645
http://ellislab.com/codeigniter/forums/viewthread/153130/
等...
答案 1 :(得分:0)
您可能需要检查服务器上的日志以确定它真正抱怨的内容,但是......您可以尝试的一件事是将mail.stmp.localhost属性设置为您的计算机的正确DNS主机名。从调试输出看起来您的机器无法确定自己的名称,因此正在发送IP地址。
答案 2 :(得分:0)
对我来说,在一个Web项目中,PHPMailer()类强制使用Auth。将Auth更改为false可修复它。也许要检查类似的选项,以您的语言将Auth设置为false。
这就是我在PHP代码中从true更改为false并在php.ini文件中添加sendmail_from
$mail = new PHPMailer();
$mail->SMTPAuth = false;