然而,当我尝试使用mail.smtp.host = 127.0.0.1发送电子邮件时,出现错误“MessagingException: 501 Syntax: HELO hostname”。
我的猜测是,在这个CentOS中,邮件服务器还没有激活。
我该如何配置一个可供javax.mail使用的邮件服务器?
谢谢
然而,当我尝试使用mail.smtp.host = 127.0.0.1发送电子邮件时,出现错误“MessagingException: 501 Syntax: HELO hostname”。
我的猜测是,在这个CentOS中,邮件服务器还没有激活。
我该如何配置一个可供javax.mail使用的邮件服务器?
谢谢
/etc/hosts
文件中映射。linux#
和cat /etc/hostname
显示linux.mydomain.com
然后以root
身份编辑您的hosts文件。 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
。发送电子邮件失败,原因是501语法:HELO主机名错误。当我使用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>
在我的情况下,etc/hostname是susetest(而不是linux.company.com)。
将etc/hosts从127.0.0.1 localhost修改为127.0.0.1 localhost susetest(在修改文件时,请确保在localhost之后使用tab键)
记得保存更改,停止postfix,然后启动postfix以重新启动SMTP服务器。
应该可以正常工作。
(将properties.setProperty("mail.smtp.localhost", "ourcompany.com");添加到属性中也解决了问题,但是当你可以找到根本原因时,绕过应该不是解决方法,即使在我的情况下需要花费几天的时间)
您需要运行sendmail
。请参阅此处以获取更多信息。配置sendmail
可能是一项繁琐的任务,如果可能的话,您可能希望从旧机器中获取sendmail.cf
的配置。
我怀疑(也)您应该设置一些中央MTA(邮件传输代理),使得企业中的所有机器都使用此代理,而不是每个主机运行一个。即不使用localhost
。