7

我有一个安装在旧 Ubuntu 机器上并使用 javax.mail 发送邮件的 Java 程序。然而,那台机器坏了,我现在在一台新的 CentOS 机器上运行相同的 Java 应用程序。

但是,尝试使用 mail.smtp.host = 127.0.0.1 发送电子邮件时,我收到错误“MessagingException: 501 Syntax: HELO hostname”。

我的猜测是这个 CentOS 还没有激活邮件服务器。

我将如何配置 javax.mail 可以使用的邮件服务器?

谢谢

4

5 回答 5

6

您的机器主机名必须映射到/etc/hosts文件中。

示例:控制台显示:linux#cat /etc/hostname显示

linux.mydomain.com

然后编辑运行为root.vi /etc/hosts

127.0.0.1  localhost linux linux.mydomain.com

可以在这里找到详细的信息:https ://confluence.atlassian.com/display/CONFKB/Sending+Email+Fails+Due+to+501+Syntax%3A+HELO+Hostname+Error

于 2015-03-23T21:04:12.957 回答
3

在使用 Spring MailSender 发送电子邮件时,我遇到了同样的问题“MessagingException: 501 Syntax: HELO hostname”。对我有用的是在 javaMailProperties 下添加额外的属性“mail.smtp.localhost”,如下所示:

    <!-- JAVA MAIL -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="" />
    <property name="port" value="25" />
    <property name="protocol" value="smtp" />
    <property name="username" value="" />
    <property name="password" value="" />
    <property name="javaMailProperties">
        <props>
            <prop key="mail.smtps.auth">true</prop>
            <prop key="mail.smtps.starttls.enable">true</prop>
            <prop key="mail.smtps.debug">true</prop>
            <prop key="mail.smtp.localhost">localhost</prop>
        </props>
    </property>
</bean>
于 2015-09-07T06:11:54.260 回答
1

问题是新机器上的命名服务没有正确配置,Java找不到机器的主机名。SMTP HELO 命令需要包含主机名。服务器正在抱怨,因为它丢失了。打开 JavaMail Session 调试,您可以看到发送的实际命令。您可以通过将 JavaMail 属性 mail.smtp.localhost 设置为您要在 HELO 命令中使用的主机名来解决此主机配置问题。

于 2012-12-12T18:56:51.630 回答
0

你需要运行sendmail. 请参阅此处了解更多信息。配置sendmail可能是一件苦差事,如果可能,您可能希望sendmail.cf从旧机器上进行配置。

我怀疑(也)您应该设置一些中央 MTA(邮件传输代理),以便您企业中的所有机器都使用它,而不是每台主机运行一个。即使用localhost.

于 2012-12-12T13:06:55.573 回答
-1

在我的情况下,etc/hostname 是 susetest(而不是 linux.company.com)

将 etc/hosts 从 127.0.0.1 localhost 修改为 127.0.0.1 localhost susetest(在 localhost 之后,请确保在修改文件时使用选项卡)

确保保存更改,后缀停止,后缀启动以重新启动 SMTP 服务器。

应该可以正常工作。

(添加 properties.setProperty("mail.smtp.localhost", "ourcompany.com"); 到属性也解决了问题,但解决方法不应该是修复,当你可以找到根本原因时,即使需要几天在我的情况下)

于 2016-06-21T17:30:54.450 回答