参考:https://www.cnblogs.com/ityouknow/p/6823356.html
准备工作:
添加依赖:
org.springframework.boot
spring-boot-starter-mail
增加配置
在application.properties中进行如下配置:
#发送邮件
spring.mail.host=smtp.qq.com
spring.mail.username=437845310@qq.com
spring.mail.password=保密哦
spring.mail.default-encoding=UTF-8
spring.mail.host是表示邮箱的smtp地址。该地址需要你在你的邮箱设置中打开,设置后会有一个密码,该密码就是spring.mail.password。spring.user.name就是你邮箱的登录名。
一、发送一封最基本的邮件:
建一个service类,直接使用@Compoent直接将该类交给spring容器,直接注入JavaMailSender对象。
@Component
public class MailService {
//发送方的邮箱地址
private static final String from = "437845310@qq.com";
//发送给谁
private static final String to = "abreaking@163.com";
//抄送给谁
private static final String[] copyto = {"437845310@qq.com"};
@Resource
private JavaMailSender javaMailSender;
//发送一封简单的邮件,纯主题+内容
public void sendSimpleMessage(){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
/message.setCc(copyto);/
message.setSubject("放假通知");
message.setText("年轻人,你的思想很危险");
javaMailSender.send(message);
}
}
编写测试代码:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringbootApplication.class)
public class SpringbootApplicationTests {
@Resource
MailService mailService;
@Test
public void test01(){
mailService.sendSimpleMessage();
}
}
这时,我们再查看邮件
二、发送一封HTML邮件
其他都不变,直接再MailService中创建方法:
//发送html格式的邮件
public void sendHtmlMessage() {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
String htmlText = "红色字体内容
";
try {
//true表示需要创建一个multipart message
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject("html邮件");
helper.setText(htmlText,true);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
测试结果为:
三、发送带附件的邮件
其他,不变,编写方法:使用FileSystemResource类实例化需要上传的附件,指定发送过去的附件名
public void sendMessageWithAttachment(){
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject("带附件的发送");
helper.setText("内容见附件",true);
FileSystemResource file = new FileSystemResource(new File("e:\附件.txt"));
//添加多个附件可以多次addAttachment
helper.addAttachment("发送的附件.txt",file);
javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
e.printStackTrace();
}
}
收到附件:
四、使用邮件模板
举个栗子:我们使用邮箱注册某个网站时,会有一个验证码发到我们的邮箱,如:
你好!你已经注册到xx网站,验证码为:123456。
(可能内容、格式还会更丰富一些),其实内容都一样,无非就验证码不一样。
所以,我们先创建一个模板页面:(使用thymeleaf,),当然,要先添加依赖
org.springframework.boot
spring-boot-starter-thymeleaf
创建一个模板页面:mail.html
Title
此次的验证码为:code。该验证码5分钟有效。
创建方法:
@Resource
TemplateEngine templateEngine;
public void sendTemplateMail(){
Context context = new Context();
context.setVariable("code","123456");
String htmlText = templateEngine.process("mail", context);
//使用发送html的方式发送。如上面</code></pre>
收到邮件如下
发表评论