ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Spring Boot实现发送邮件

2020-07-02 17:02:50  阅读:255  来源: 互联网

标签:helper Spring Boot 邮箱 springframework mail org import 邮件


注意:这篇博客是自己学完发送邮箱之后的一个小总结,不适合新手拿来学习用!


 

分为三步:

1.邮箱的设置:在你使用的邮箱内启用客户端SMTP服务

2.Spring Email:导入jar包;邮箱参数配置;使用JavaMailSender发送邮件

3.模板引擎:使用Thymeleaf发送HTML邮件

 

1.首先发送邮件需要一个代理发送邮件的邮箱,启用SMTP服务:

改图是使用的新浪邮箱:

 

2.在pom.xml中导入jar包(spring-boot-starter-mail):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <version>2.1.5.RELEASE</version>
</dependency>

 

在项目的配置文件中配置代理发送邮件的邮箱属性:

1 spring.mail.host=smtp.sina.com
2 spring.mail.port=465
3 spring.mail.username=#这里填邮箱地址
4 spring.mail.password=#这里填邮箱的授权码5 spring.mail.protocol=smtps
6 spring.mail.properties.mail.smtp.ssl.enable=true

 

然后使用JavaMailSender发送邮件:

 1 import org.slf4j.Logger;
 2 import org.slf4j.LoggerFactory;
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.mail.javamail.JavaMailSender;
 6 import org.springframework.mail.javamail.MimeMessageHelper;
 7 import org.springframework.stereotype.Component;
 8 
 9 import javax.mail.MessagingException;
10 import javax.mail.internet.MimeMessage;
11 
12 @Component
13 public class MailClient {
14 
15     private static final Logger logger = LoggerFactory.getLogger(MailClient.class);
16 
17     @Autowired
18     private JavaMailSender mailSender;
19 
20     @Value("${spring.mail.username}")
21     private String from;
22 
23     public void sendMail(String to,String subject,String content){
24         try {
25             MimeMessage message = mailSender.createMimeMessage();
26             MimeMessageHelper helper = new MimeMessageHelper(message);
27             helper.setFrom(from);
28             helper.setTo(to);
29             helper.setSubject(subject);
30             helper.setText(content,true);
31             mailSender.send(helper.getMimeMessage());
32         } catch (MessagingException e) {
33             logger.error("发送邮箱失败:"+e.getMessage());
34         }
35 
36     }
37 }

 

这里看JavaMailSender源码就可以发现这个JavaMailSender只做两件事情

创建MimeMessage还有发送邮件,如下代码:

 

 1 public interface JavaMailSender extends MailSender {
 2     MimeMessage createMimeMessage();
 3 
 4     MimeMessage createMimeMessage(InputStream var1) throws MailException;
 5 
 6     void send(MimeMessage var1) throws MailException;
 7 
 8     void send(MimeMessage... var1) throws MailException;
 9 
10     void send(MimeMessagePreparator var1) throws MailException;
11 
12     void send(MimeMessagePreparator... var1) throws MailException;
13 }

 

 

 

使用JavaMailSender创建MimeMessage之后可以使用一个名为MimeMessageHelper的类来set参数,然后用JavaMailSender执行发送方法.

1 MimeMessage message = mailSender.createMimeMessage();
2 MimeMessageHelper helper = new MimeMessageHelper(message);
3 helper.setFrom(from);
4 helper.setTo(to);
5 helper.setSubject(subject);
6 helper.setText(content,true);
7 mailSender.send(helper.getMimeMessage());        

 

3.使用Thymeleaf模板引擎发送HTML格式的邮件

在templates下创建一个html:

 1 <!DOCTYPE html>
 2 <html lang="en" xmlns:th="http://www.thymeleaf.org">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>邮箱示例</title>
 6 </head>
 7 <body>
 8     <p>欢迎你,<span style="color: red" th:text="${username}"></span>!</p>
 9 </body>
10 </html>

 

在测试类中测试:

 1 import com.nowcoder.community.util.MailClient;
 2 import org.junit.Test;
 3 import org.junit.runner.RunWith;
 4 import org.springframework.beans.factory.annotation.Autowired;
 5 import org.springframework.boot.test.context.SpringBootTest;
 6 import org.springframework.test.context.ContextConfiguration;
 7 import org.springframework.test.context.junit4.SpringRunner;
 8 import org.thymeleaf.TemplateEngine;
 9 import org.thymeleaf.context.Context;
10 
11 
12 @RunWith(SpringRunner.class)
13 @SpringBootTest
14 @ContextConfiguration(classes = CommunityApplication.class)
15 public class MailTests {
16 
17     @Autowired
18     private MailClient mailClient;
19 
20     @Autowired
21     private TemplateEngine templateEngine;
22 
23     @Test
24     public void testHtmlMail(){
25         Context context = new Context();
26         context.setVariable("username","sunday");
27 
28         String content = templateEngine.process("/mail/demo",context);
29         System.out.println(content);
30 
31         mailClient.sendMail("目标邮箱","邮件标题","邮件内容");
32     }
33 }

 

测试之后邮箱就会发送给目标邮箱!

 

标签:helper,Spring,Boot,邮箱,springframework,mail,org,import,邮件
来源: https://www.cnblogs.com/lkylin/p/13225766.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有