Apache 发送邮件错误501-服务器上的参数或参数中存在语法错误,但本地系统上不存在语法错误
我们的Wicket 6 Web应用程序中有一个邮件功能。最近,我不得不将邮件服务器的凭据更改为新的凭据。我在本地系统(操作系统Windows、Tomcat7Web服务器)上测试了它,它运行得非常好。邮件已经寄出,我收到了。 当我在web服务器(OS:Debian)上应用相同的凭据时,我得到以下错误消息:501-参数或参数中的语法错误 我查了好几次邮件地址,但似乎一切都很好。因此,我猜测可能是Tomcat7、Apache2或hoster在服务器上以某种方式阻止了消息(尽管我打电话给hoster,他们告诉我他们的防火墙没有阻止任何传出信号)。然而,使用旧的凭证,邮件服务运行得非常好。因此,并非所有输出信号都被阻断 我对这种服务器配置不是很有经验。谁能给我一个提示,我必须在哪里检查配置。谢谢你的支持 编辑 为了发送邮件,我们使用spring框架的嵌入式javamail服务。代码如下所示:Apache 发送邮件错误501-服务器上的参数或参数中存在语法错误,但本地系统上不存在语法错误,apache,email,debian,tomcat7,Apache,Email,Debian,Tomcat7,我们的Wicket 6 Web应用程序中有一个邮件功能。最近,我不得不将邮件服务器的凭据更改为新的凭据。我在本地系统(操作系统Windows、Tomcat7Web服务器)上测试了它,它运行得非常好。邮件已经寄出,我收到了。 当我在web服务器(OS:Debian)上应用相同的凭据时,我得到以下错误消息:501-参数或参数中的语法错误 我查了好几次邮件地址,但似乎一切都很好。因此,我猜测可能是Tomcat7、Apache2或hoster在服务器上以某种方式阻止了消息(尽管我打电话给hoster,他
public class PrMailSendServiceImpl implements IPrMailSenderService{
private JavaMailSenderImpl javaMailSenderService;
private String defaultEmailFrom = "a@b.com";
private String defaultEmailTo;
public void sendEmail(String toEmail, String mailSubject, String mailContent) throws MessagingException {
MimeMessage msg = javaMailSenderService.createMimeMessage();
MimeMessageHelper mime = new MimeMessageHelper(msg, true, "UTF-8");
mime.setText(mailContent, true);
mime.setSubject(mailSubject);
mime.setTo(toEmail);
mime.setFrom(defaultEmailFrom);
javaMailSenderService.send(msg);
}
/*getter and setter*/
}
执行send方法时发生所述错误
spring-context.xml文件包含以下配置:
<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="mrvnet.kundenserver.de" />
<property name="port" value="25" />
<property name="username" value="my@mail.com" />
<property name="password" value="myPassword" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
</props>
</property>
</bean>
<bean id="mailSendService" class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
<property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
<property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>
真的
真的
my@mailcom
我解决了这个问题。我从他那里得到了答案
简单邮件传输协议RFC规定使用HELO和EHLO。
SMTP对话中HELO/EHLO的无效使用是您的问题。
大多数邮件传输代理(MTA)执行DNS
(A-和PTR-资源记录)验证
在SMTP HELO上给定的域名上
和EHLO命令。这可能违反RFC 2821,
因此,默认情况下,电子邮件通常不会被拒绝。
换句话说,EHLO和HELO通常
需要FQDN客户必须在
启动邮件事务
解决方案(请参阅)
在我们的服务器上,我们有几个子域。因此,调用InetAddress.getLocalHost().getHostName()
时引发异常。因此,为了手动设置直升机所需的主机名,我在spring-context.xml中添加了行my.server.host.name
现在看来:
<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="mrvnet.kundenserver.de" />
<property name="port" value="25" />
<property name="username" value="my@mail.com" />
<property name="password" value="myPassword" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.localhost">my.server.host.name</prop>
</props>
</property>
</bean>
<bean id="mailSendService" class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
<property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
<property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>
真的
真的
my.server.host.name
my@mailcom
我解决了这个问题。我从他那里得到了答案
简单邮件传输协议RFC规定使用HELO和EHLO。
SMTP对话中HELO/EHLO的无效使用是您的问题。
大多数邮件传输代理(MTA)执行DNS
(A-和PTR-资源记录)验证
在SMTP HELO上给定的域名上
和EHLO命令。这可能违反RFC 2821,
因此,默认情况下,电子邮件通常不会被拒绝。
换句话说,EHLO和HELO通常
需要FQDN客户必须在
启动邮件事务
解决方案(请参阅)
在我们的服务器上,我们有几个子域。因此,调用InetAddress.getLocalHost().getHostName()
时引发异常。因此,为了手动设置直升机所需的主机名,我在spring-context.xml中添加了行my.server.host.name
现在看来:
<bean id="javaMailSenderService" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="mrvnet.kundenserver.de" />
<property name="port" value="25" />
<property name="username" value="my@mail.com" />
<property name="password" value="myPassword" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.localhost">my.server.host.name</prop>
</props>
</property>
</bean>
<bean id="mailSendService" class="de.virtualsolution.procon.service.impl.PrMailSendServiceImpl">
<property name="javaMailSenderService"><ref bean="javaMailSenderService" /></property>
<property name="defaultEmailFrom"><value>my@mailcom</value></property>
</bean>
真的
真的
my.server.host.name
my@mailcom
没有代码、配置等无法说明。这个问题似乎与邪恶无关,告诉我们什么是邮件发送软件是有用的。在您看到这个错误的地方…感谢您的评论和支持。我已经添加了邮件配置。如果你需要更多的信息,请告诉我。很抱歉耽搁了,但我正在度假:-)没有代码,配置等无法说明。这个问题似乎与邪恶无关,告诉我们什么是邮件发送软件是有用的。在您看到这个错误的地方…感谢您的评论和支持。我已经添加了邮件配置。如果你需要更多的信息,请告诉我。抱歉耽搁了,我正在度假:-)