# 07-集成邮件服务

# 前言

邮件服务在开发中非常常见,比如用邮件注册账号、邮件作为找回密码的途径、用于订阅内容定期邮件推送等等,下面就简单的介绍下邮件实现方式。

# 准备

一个用于发送的邮箱,本文是用腾讯的域名邮箱,可以自己搞一个域名绑定下,登录地址:domain.mail.qq.com (opens new window)

# 邮件服务实现

# 1.添加依赖

<!-- 邮件服务 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1
2
3
4
5

# 2.配置文件

spring.mail.host=smtp.qq.com
spring.mail.username=zwqh@clover1314.com
spring.mail.password=*****
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
1
2
3
4
5
6

# 3.实现示例

@Service
public class MailSendService {
	
	@Value("${spring.mail.username}")
	private String from;

	@Autowired
	private JavaMailSender mailSender;

	/**
     * 发送邮件
     *
     * @return
     */
    public boolean send() {
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            //发送者
            message.setFrom(from);
            //接收者
            message.setTo("zhengxiaoch@163.com");
            //抄送
            message.setCc("zhengxiaochuan86@gmail.com");
            //邮件主题
            message.setSubject("邮件主题");
            //邮件内容
            message.setText("这里是邮件内容");
            mailSender.send(message);
            System.out.println("邮件发送成功");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 发送富文本邮件
     *
     * @return
     */
    public boolean sendHtml() {
        //使用JavaMail的 MimeMessage,支持更多复杂的邮件格式和内容
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            // 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            // 使用辅助类 MimeMessage 设定参数
            helper.setFrom(from);
            //接收者
            helper.setTo("zhengxiaoch@163.com");
            //密送
            helper.setBcc("zhengxiaochuan86@gmail.com");
            helper.setSubject("富文本邮件主题");
            helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",
                    true);
            mailSender.send(mimeMessage);
            System.out.println("邮件发送成功");
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 发送富文本带附件的邮件
     * @return
     */
    public boolean sendHtmlWithAttach() {
        // 使用 JavaMail 的 MimeMessage,支持更多复杂的邮件格式和内容
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            // 创建 MimeMessageHelper 对象,处理 MimeMessage 辅助类
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setFrom(from);
            helper.setTo("zhengxiaoch@163.com");
            helper.setSubject("富文本带附件的邮件主题");
            helper.setText("<h1>这是富文本邮件内容标题</h1><p style='color:red;'>这里是段落一</p><p style='color:orange;'>这里是段落二</p>",true);
            //加载文件资源作为附件
            ClassPathResource file=new ClassPathResource("banner.txt");
            //添加附件,并重命名
            helper.addAttachment("文本文件.txt", file);
            mailSender.send(mimeMessage);
            System.out.println("邮件发送成功");
            return true;
        } catch (MessagingException e) {
            e.printStackTrace();
            return false;
        }

    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

# 4.Controller 用于测试

@RestController
public class MailController {

	@Autowired
	private MailSendService mailSendService;
	
	@RequestMapping("/send")
	public String send() {
		mailSendService.send();
		return "send success";
	}
	
	@RequestMapping("/sendHtml")
	public String sendHtml() {
		mailSendService.sendHtml();
		return "sendHtml success";
	}
	
	@RequestMapping("/sendHtmlWithAttach")
	public String sendHtmlWithAttach() {
		mailSendService.sendHtmlWithAttach();
		return "sendHtmlWithAttach success";
	}
	
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 5.进入邮箱查看发送结果

上次更新: 2020/7/27 06:47:52