SpringMvc使用JavaMail发送邮件,并使用465端口开启ssl加密传输,保证邮件安全

代码在本地发邮件没任何问题。但部署到服务器,发送邮件显示连接异常。一开始非常懵逼,之后telnet smtp.163.com 25不通,发现是云服务器出于安全考虑,关闭了服务器的25端口,而25端口是smtp的默认端口。之后telnet smtp.163.com 465能通(邮件服务商的加密的465端口)。

1、POM文件配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
 </dependencies>

2、spring 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- 邮箱配置 -->
     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="smtp.163.com" />
        <property name="username" value="********" />
        <property name="password" value="********" />
        <property name="port" value="465" /
  
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.timeout">50000</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <!-- <prop key="mail.debug">true</prop> -->       
                <prop key="mail.smtp.socketFactory.port">465</prop>
                <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
                <prop key="mail.smtp.socketFactory.fallback">false</prop>
            </props>
        </property>
    </bean>

 3、代码实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* 组织邮件信息并发送邮件
*
* @param toAddress
* @param fromAddress
* @param subject
* @param htmlBody
* @throws MessagingException
 */
public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody)
            throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8");
    helper.setTo(toAddress);
    helper.setFrom(fromAddress);
    helper.setText(htmlBody, true);
    helper.setSubject(subject);
    mailSender.send(message);
}
 
this.sendHtmlEmail("18753377533@163.com", "sender@163.com", "找回您的账户密码", emailContent);

  https://www.cnblogs.com/dixinyunpan/p/6041278.html

       https://blog.csdn.net/yuruixin_china/article/details/73276390

posted @   人艰不拆_zmc  阅读(3576)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-05-30 Hyperledger Fabric CA的命令行用法
点击右上角即可分享
微信分享提示