1

我正在尝试使用 java 应用程序连接到 Mercury 邮件服务器,并且我正在使用 JavaMail api。连接不成功,我在日志中收到此错误:

EHLO xxxx
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 有不同的含义,但我不确定这是否真的是问题的根源?如果不是,那是什么原因造成的?我用邮件客户端检查了邮件服务器,它工作正常,我用 James 邮件服务器检查了代码,它也工作正常!

JavaMail API 版本是:1.4.5(最新版本)
Mercury/32:4.7

4

3 回答 3

2

我在 Google 上进行了搜索,554 Invalid HELO format并获得了大量关于您的特定 Mercury 问题的点击率。这是一个错误。

http://community.pmail.com/forums/thread/4136.aspx

http://www.mantisbt.org/bugs/view.php?id=9645

http://ellislab.com/codeigniter/forums/viewthread/153130/

ETC...

于 2012-10-16T06:46:46.573 回答
1

您可能需要检查服务器上的日志以找出它真正在抱怨什么,但是......您可以尝试的一件事是将 mail.stmp.localhost 属性设置为您机器的正确 DNS 主机名。从调试输出看来,您的机器无法确定自己的名称,因此改为发送 IP 地址。

于 2012-10-16T01:52:39.733 回答
0

对我来说,在一个 Web 项目中,PHPMailer() 类正在强制进行身份验证。将 Auth 更改为 false 修复了它。也许检查类似的选项以在您的语言中将 Auth 设置为 false。

这是我在 PHP 代码中从 true 更改为 false 并在 php.ini 文件中添加 sendmail_from

    $mail = new PHPMailer();
    $mail->SMTPAuth = false;
于 2020-11-11T13:58:35.427 回答