首先加入相应的jar包,加入到pom文件中
<!--spring-boot-starter-mail -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
然后再SpringBoot的主配置文件中 配置邮件所有要的信息:这里我选用的是QQ邮箱为发送邮件的一方
#Emails QQ
spring.mail.host=smtp.qq.com
spring.mail.username=xxxxx@qq.com//发送邮件的一方
#授权码:这里的密码不是登陆邮箱的密码 而是在邮箱设置中的授权码
spring.mail.password=1234567
spring.mail.default-encoding=utf-8//发送邮件的默认编码格式
1.文本邮件
@Component
public class EmailText {
//从配置文件中引入发送邮件的邮箱
@Value("${spring.mail.username}")
private String from;
//引入JavaMailSender
@Autowired
private JavaMailSender Sender;
public void sendSimpleTextEmail(String To,String Subject,String content){
SimpleMailMessage simpleMessage=new SimpleMailMessage();
//发送给谁
simpleMessage.setTo(To);
//主题
simpleMessage.setSubject(Subject);
//发送的文本信息
simpleMessage.setText(content);
//谁去发送邮件
simpleMessage.setFrom(from);
//开始发送
Sender.send(simpleMessage);
}
}
2.图片HTML邮件
@Component
public class EmailHtml {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender Sender;
public void sendHtmlEmail(String To,String Subject,String content) throws Exception{
MimeMessage simpleMessage=Sender.createMimeMessage();
MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);
//谁去发送邮件
MessageHelper.setFrom(from);
//发送给谁
MessageHelper.setTo(To);
//主题
MessageHelper.setSubject(Subject);
//发送的文本信息
MessageHelper.setText(content,true);
//开始发送
Sender.send(simpleMessage);
}
}
3.附件邮件
@Component
public class AttachEmail {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender Sender;
public void sendAttachEmail(String To,String Subject,String content,String path) throws Exception{
MimeMessage simpleMessage=Sender.createMimeMessage();
MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);
//谁去发送邮件
MessageHelper.setFrom(from);
//发送给谁
MessageHelper.setTo(To);
//主题
MessageHelper.setSubject(Subject);
//发送的文本信息
MessageHelper.setText(content,true);
//加载附件资源
FileSystemResource file=new FileSystemResource(new File(path));
//获取附件的名称
String filename=file.getFilename();
MessageHelper.addAttachment(filename,file);
//开始发送
Sender.send(simpleMessage);
}
}
4.图片邮件
//发送图片邮件
@Component
public class EmailPicture {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender Sender;
public void sendPictureEmail(String To,String Subject,String content,String path,String picId) throws Exception{
MimeMessage simpleMessage=Sender.createMimeMessage();
MimeMessageHelper MessageHelper=new MimeMessageHelper(simpleMessage,true);
//谁去发送邮件
MessageHelper.setFrom(from);
//发送给谁
MessageHelper.setTo(To);
//主题
MessageHelper.setSubject(Subject);
//发送的文本信息
MessageHelper.setText(content,true);
//加载图片资源
FileSystemResource file=new FileSystemResource(new File(path));
//发送多张图片 图片相同 则pic相同 重复写MessageHelper.addInline(picId,file);
MessageHelper.addInline(picId,file);
//MessageHelper.addInline(picId,file);发送多张相同的图片
//获取附件的名称
String filename=file.getFilename();
//开始发送
Sender.send(simpleMessage);
}
}
5.进行测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybussinessApplicationTests {
@Autowired
private EmailText text;
@Autowired
private EmailHtml html;
@Autowired
private AttachEmail attach;
@Autowired
private EmailPicture Picture;
String content ="<html>\n <body>\n <h3> hello world,这是一封HTML邮件!<h3>\n </body>\n </html>\n ";
@Test
public void setText() {
text.sendSimpleTextEmail("xxxx@qq.com.cn","你好","hello world");
//System.out.println("hello world!!!");
}
@Test
public void setHtml() {
try {
html.sendHtmlEmail("xxxx@qq.com.cn","你好",content);
}catch (Exception e){
e.getMessage();
}
}
@Test
public void setAttach() {
try {
attach.sendAttachEmail("xxxx@qq.com.cn","你好","附件邮件","/Users/wangqiang/Downloads/mmall/readme.zip");
}catch (Exception e){
e.getMessage();
}
}
String pid="wangqiang001";
String path="/Users/wangqiang/Downloads/mmall/010.jpg";
String Piccontent ="<html>\n <body>\n hello world,这是一封有图片的邮件:<img src=\'cid:"+pid+"\'></img></body>\n </html>\n ";
//如果发送多张 图片的话 可以在Piccontent 中 重复写<img src=\'cid:"+pid+"\'></img> 更换cid的编号
@Test
public void setPic() {
try {
Picture.sendPictureEmail("xxxx@qq.com.cn","图片邮件",Piccontent,path,pid);
}catch (Exception e){
e.getMessage();
}
}
}
6.模版邮件:在实际的开发当中,邮件的主体内容不会发生变化 主要变化的是用的信息,这种类型的邮件 特别适合模版邮件进行发送
首先添加jar包
<!--Thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
然后 在项目的/resources/templates文件中创建一个HTML模版
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>邮件模版</title>
</head>
<body>
您好!非常感谢注册成为我们的会员,点击链接进行最后一步验证注册<br/>
<a href="@{https://blog.csdn.net/m0_37871296/article/details/{id}(id=${id}})}">激活账户</a>
</body>
</html>
//theyleaf的模版引擎
@Autowired
private TemplateEngine Engine;
//使用HTML方式发送邮件
@Autowired
private EmailHtml html1;
@Test
public void testTemplateEmail(){
Context context=new Context();
context.setVariable("id","93380034");
String templEmail=Engine.process("EmailTemplate",context);
try {
html1.sendHtmlEmail("xxxx@qq.com.cn","模版邮件",templEmail);
}catch (Exception e){
e.getMessage();
}
}
}