java发送mail,这个是很容易的事情,网上的例子是一大堆的。最近公司的邮箱升级为https之后,同事反馈说邮件发送报错,报的错误是
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
网上看了一下,大概的解决方案是安装证书,但是个人不太喜欢这种方式,经过google以后,最终找到解决方案。
采用spring的JavaMailSenderImp,配置文件如下
<bean class="org.springframework.mail.javamail.JavaMailSenderImpl" id="javaMailSender">
<property name="host" value="${mail.host}"/>
<!--<property name="port" value="465"/>-->
<property name="protocol" value="smtp"/>
<property name="username" value="${mail.userName}"/>
<property name="password" value="${mail.password}"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.ssl.enable">true</prop>
<prop key="mail.smtp.ssl.socketFactory">#{mailSSLSocketFactory}</prop>
</props>
</property>
</bean>
<bean class="com.sun.mail.util.MailSSLSocketFactory" id="mailSSLSocketFactory">
<property name="trustAllHosts" value="true"/>
</bean>