项目需要在阿里云ECS上将每日的简易汇总信息通过邮件发送出来,这里使用的JavaMail默认的发送端口是25,而阿里云出于服务器安全性考虑偏偏25端口是不开放的,导致邮件服务器连接超时发送失败,报错如下:
MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.majing.io, 25; timeout -1;
现将邮件服务器的发送端口改为465,发送方式改为ssl加密,需要添加javaMail配置项如下:
在之前的设置项里添加
Properties javaMailProperties = new Properties();
javaMailProperties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
javaMailProperties.setProperty("mail.smtp.socketFactory.port", "465");
javaMailProperties.setProperty("mail.smtp.port", "465");
如若使用spring配置文件配置:
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="${mail.host}"/>
<property name="username" value="${mail.username}"></property>
<property name="password" value="${mail.password}"></property>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.smtp.socketFactory.port">465</prop>
<prop key="mail.smtp.port">465</prop>
</props>
</property>
</bean>
本人亲自试验可以正常发送邮件!!!!