添加依赖依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
|
修改配置文件
在application.yml中配置发送邮件相关的参数,具体如下
1 2 3 4 5 6 7
| spring: mail: host: smtp.qq.com # 填入自己申请的邮箱信息 username: password: default-encoding: UTF-8
|
重要的参数就这些,其它的使用默认的即可,以下为解释:
host: 邮箱服务器地址,这个根据自己使用的什么邮箱有区别,比如:
smtp.163.com: 163邮箱
smtp.126.com: 126邮箱
smtp.qq.com: qq邮箱
username: 邮箱登录的用户名
password: 第三方登陆授权码(需要自己在邮箱中申请)
default-encoding: 编码方式
POP3/SMTP 服务
上面提到了授权码的概念,首先要明确一个概念就是授权码跟我们直接登陆邮箱的密码不是一样的,授权码可以理解为第三方客户端登陆邮箱的密码,要想获取授权码需要我们去自己所用邮箱的官网设置开启 POP3/SMTP以及IMAP/SMTP服务,我这里就以自己使用的qq账号为例介绍打开该服务以及获取授权码的步骤,如图:


登陆qq邮箱,按照图示步骤进行操作,在选择了服务之后会弹窗展示授权码,这里的授权码就是上边配置文件中password需要填写的值(只写IMAP/SMTP的授权码就可以)。
发送不同格式的邮件
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| public class MailServiceImpl implements IMailService {
@Autowired private JavaMailSender jms;
@Autowired private TemplateEngine templateEngine;
@Value("${spring.mail.username}") private String from;
@Override public void simpleMil(String toUser) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(from); message.setTo(toUser); message.setSubject("文字格式邮件"); message.setText("文字格式内容"); jms.send(message); }
@Override public void htmlMail(String toUser) throws MessagingException { MimeMessage message = jms.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toUser); helper.setSubject("html格式标题"); String content = "<p style='color:yellow;'>这是一封html格式的文件</p><h1>这是一封html格式的文件</h1>"; helper.setText(content, true); jms.send(message); }
@Override public void attachmentMail(String toUser) throws MessagingException { MimeMessage message = jms.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toUser); helper.setSubject("带附件"); helper.setText("这是一封带附件的邮件"); FileSystemResource fs = new FileSystemResource(new File(this.getClass().getResource("/").getPath() + "\\自己菜与大佬菜的区别.jpg")); helper.addAttachment("自己菜与大佬菜的区别.jpg", fs); jms.send(message); }
@Override public void imgMail(String toUser) throws MessagingException { MimeMessage message = jms.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toUser); helper.setSubject("带图片邮件"); String content = "<html><body>小菜鸡图片<img src='cid:img'/></body></html>"; helper.setText(content, true); FileSystemResource fs = new FileSystemResource(new File(this.getClass().getResource("/").getPath() + "\\自己菜与大佬菜的区别.jpg")); helper.addInline("img", fs); jms.send(message); }
@Override public void templateMail(String toUser) throws MessagingException { MimeMessage message = jms.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toUser); helper.setSubject("模板邮件"); Context context = new Context(); context.setVariable("username", "段誉"); String template = templateEngine.process("MailTemplate", context); helper.setText(template, true); jms.send(message); } }
|
模板邮件的模板
接下来在src/main/resources/templates目录下新建MailTemplate.html文件,内容如下
1 2 3 4 5 6 7 8 9 10
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>您好,<span th:text="${username}"></span>:这是来自测试的邮件模板!</h1> </body> </html>
|
测试结果不再展示,更改配置后可自行测试
demo地址
https://gitee.com/fengzxia/spring-boot-mail
来源
作者:诺丨言
链接:https://juejin.im/post/5ca8578bf265da30893a052d
来源:掘金