1. 程式人生 > >阿里雲ECS禁用25埠導致JavaMail郵件傳送失敗

阿里雲ECS禁用25埠導致JavaMail郵件傳送失敗

專案需要在阿里雲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>

本人親自試驗可以正常傳送郵件!!!!