SpringBoot发送邮件
一. 添加依赖
<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>
二. 配置信息
#服务端口号
server.port=8080
#应用名称
spring.application.name=springboot-mail-demo
#邮箱主机(此处为QQ邮箱)
spring.mail.host=smtp.qq.com
#邮箱用户名(发送人的邮箱号)
spring.mail.username=1074593588@qq.com
#授权码,可以在邮箱账户设置中发送短信获取
spring.mail.password=vyphdusyypfyghia
#是否开启认证
spring.mail.properties.mail.smtp.auth=true
#是否开启starttls协议
spring.mail.properties.mail.smtp.starttls.enbale=true
#starttls协议是否必须
spring.mail.properties.mail.smtp.starttls.required=true
三. 邮件种类
3.1 发送简单的邮件
package com.prosay.mail.service.impl;
import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@Service
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendSimpleMail() {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo("916246448@qq.com");
message.setSubject("Spring Boot");
message.setText("这是一封来自Spring Boot的邮件!");
message.setSentDate(new Date());
javaMailSender.send(message);
}
}
3.2 发送html格式的邮件
package com.prosay.mail.service.impl;
import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@Service
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendHtmlMail() {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("916246448@qq.com");
helper.setSubject("Spring Boot html邮件");
StringBuilder builder = new StringBuilder();
builder.append("<p style='color:#42b983'>使用Spring Boot和RabbitMQ发送HTML格式邮件。</p>");
helper.setText(builder.toString(), true);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
3.3 发送带附件的邮件
package com.prosay.mail.service.impl;
import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@Service
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendAttrachmentsMail() {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("916246448@qq.com");
helper.setSubject("Spring Boot attachments");
helper.setText("详情请看附件");
FileSystemResource resource = new FileSystemResource(new File("src/main/resources/application" +
".properties"));
helper.addAttachment("application.properties", resource);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
3.4 发送带静态资源的邮件
package com.prosay.mail.service.impl;
import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@Service
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender javaMailSender;
@Override
public void sendStaticResourceMail() {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("916246448@qq.com");
helper.setSubject("Spring Boot attachments");
helper.setText("<html><body>图片:<img src='cid:img'/></body></html>", true);
FileSystemResource img = new FileSystemResource(new File("src/main/resources/static/file/img.jfif"));
helper.addInline("img", img);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
3.5 发送html模板的邮件
package com.prosay.mail.service.impl;
import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
@Service
public class MailServiceImpl implements MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private JavaMailSender javaMailSender;
@Autowired
private TemplateEngine templateEngine;
@Override
public void sendTemplateMail(String code) {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo("916246448@qq.com");
helper.setSubject("Spring Boot RabbitMQ");
Context context = new Context();
context.setVariable("code", code);
String template = this.templateEngine.process("emailTemplate", context);
helper.setText(template, true);
javaMailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>模板</title>
</head>
<body>
您好,您的验证码为<span th:text="${code}"></span>,请在两分钟内使用完成操作。
</body>
</html>
四. 感谢
- 本篇参考了Mrbird写的博客,如果有兴趣可以去看看,博客很漂亮内容很精彩。
- 地址