阿里云ECS服务禁用25端口导致邮件发送失败
报错信息:MailConnectException: Couldn't connect to host, port: smtp.mxhichina.com, 25
解决方案网上查询共两种方案,博主使用的第二种。
方案1
向aliyun提交申请,解封25端口,需要3-5天。
该方案未经过验证,申请解封地址:https://help.aliyun.com/knowledge_detail/56130.html
方案2
放弃25端口,使用ssl加密并改用465端口。
该方案经过了博主验证
1、apache commons-email中使用方法如下:
//启用ssl加密
email.setSSLOnConnect(true);
//使用465端口(不设置也可,ssl默认为465)
email.setSslSmtpPort("465");
2、JavaMail使用ssl加密465端口发送邮件
主要是在原来发送邮件的配置上添加ssl,并设置为465端口。
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>