前几天项目上线阿里云进行调试的时候,打算测试一遍流程。出现了一个问题。那就是在本地很好的用的发送邮件接口。在线上无法调用成功。我们使用的Javax-Mail和Spring框架整合的Spring-mail插件。最后查询问题是因为阿里云屏蔽了非SSL链接的25发送邮件端口。
刚开始的配置文件:
mail.host=smtp.ym.163.com
mail.username=contact@xxxx.ai
mail.password=xxxx
mail.smtp.auth=false
mail.smtp.timeout=25000
mail.smtp.port=25
<!-- 邮件发送器 -->
<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="utf-8" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
<prop key="mail.smtp.port">${mail.smtp.port}</prop>
</props>
</property>
</bean>
修改之后的配置文件为:
<!-- 在上面配置文件的基础上修改两个配置文件,增加一个配置文件-->
mail.smtp.auth=true
<!--打开994端口-->
mail.smtp.port=994
<!--修改发送方式-->
mail.smtp.socketFactory=javax.net.ssl.SSLSocketFactory
<!-- 邮件发送器 -->
<bean id="javaMailSenderImpl" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}" />
<property name="username" value="${mail.username}" />
<property name="password" value="${mail.password}" />
<property name="defaultEncoding" value="utf-8" />
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
<prop key="mail.smtp.timeout">${mail.smtp.timeout}</prop>
<prop key="mail.smtp.port">${mail.smtp.port}</prop>
**<!--增加一行-->**
<prop key="mail.smtp.socketFactory.class">${mail.smtp.socketFactory}</prop>
</props>
</property>
</bean>