与Mercury Mail服务器错误的JavaMail API连接

时间:2012-10-16 01:22:29

标签: java smtp javamail mercury-mta

我正在尝试使用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

3 个答案:

答案 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;