spring mail http代理
场景:spring mail 经过HTTP代理发送邮件
spring mail 通过HTTP代理发送邮件
spring mail 通过HTTP代理发送邮件
spring框架中org.springframework.mail.javamail这包实际上是对java.mail做而二次封装。发送邮件依然通过javamail实现。
而在官方文档中说明,javamail是不可以通过http代理发送邮件的。只能通过socks V4或者V5连接网络发送邮件。
目前的环境是,内网机器能过某个http代理连接网络上网。但是却没有提供socks代理服务器。也就是说,javamail直接通过这个代理服务器是不可能实现发送邮件功能的。
解决方案:
使用Httport这个二次代理软件,把远程smtp服务器映射到本机端口。然后设置javamail通过这个映射端口发送邮件。如smtp服务器映射端口为9025,则配置javamail的smtp服务器为:localhost:9025,则可以在内网只有http代理服务器的环境下实现发送邮件的功能。
示例代码:
JavaMailSender的配置:
<!-- javaMailSender --> <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="defaultEncoding" value="${email.encoding}"></property> <property name="host" value="${email.host}"></property> <property name="port" value="${email.port}"></property> <property name="username" value="${email.username}"></property> <property name="password" value="${email.password}"></property> <property name="protocol" value="${email.protocal}"></property> <property name="javaMailProperties"> <props> <!-- 让服务器检验用户密码是否正确 --> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.timeout">180000</prop> <prop key="mail.debug">true</prop> </props> </property> </bean>