【问题标题】:Cannot send email with Java in Test Server无法在测试服务器中使用 Java 发送电子邮件
【发布时间】:2017-10-26 18:01:12
【问题描述】:

我正在使用 Java Email Sender 以 Java 发送电子邮件。我正在使用 VelocityEngine 发送 HTML 电子邮件。

在我的本地计算机上一切正常!电子邮件已发送。

但是当我将代码部署到测试服务器(没有域相关,只有 IP)时,与 gmail 的连接失败。

我在 spring-config.xml 中有我的电子邮件设置

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="mail.domain.com" />
        <property name="port" value="25" />
        <property name="username" value="mymail@domain.com" />
        <property name="password" value="*xxxxxx" />

        <property name="javaMailProperties">
           <props>
                  <prop key="mail.smtp.auth">true</prop>
                  <prop key="mail.smtp.starttls.enable">false</prop>
                  <prop key="mail.smtps.ssl.checkserveridentity">true</prop>
                  <prop key="mail.smtps.ssl.trust">*</prop>
               </props>
        </property>
    </bean>

当我尝试从服务器发送电子邮件时,我收到错误消息:

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: mail.domain.com, port: 25;

然后它说,这是一个超时.. 但我的问题是我是否需要从电子邮件服务器禁用任何安全性,或者它是否与 tomcat 相关

【问题讨论】:

  • 你真的使用mail.domain.com作为服务器主机名吗?
  • 不...我使用正确的电子邮件和服务器...本地它可以工作,它发送我想要的电子邮件,但问题出在服务器上...
  • 您确定可以从您的测试服务器访问 SMTP 服务器吗?也许有防火墙或类似的东西。
  • 这听起来像是正确的理由......但奇怪的是我的机器正在工作......
  • 这就是可能涉及防火墙的原因。

标签: java email tomcat tomcat8


【解决方案1】:

最后我能够在 spring-config 中使用 TLS 安全性来解决这个问题

所以我只需要添加

<prop key="mail.smtp.auth">true</prop>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtps.ssl.checkserveridentity">true</prop>
<prop key="mail.smtps.ssl.trust">*</prop>

并将端口更改为 587。

问候

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2012-06-24
    • 1970-01-01
    • 2019-05-21
    • 2011-06-06
    相关资源
    最近更新 更多