利用JavaMail完成发送激活邮件的功能。当前案例是以腾讯qq邮箱服务器为演示案例:
开启邮件服务授权
qq邮箱服务器官方会回送一个授权码在网页,类似下图的效果:
邮件发送流程
因为springboot提供了java操作邮件发送的启动器,所以在springboot 项目中完成邮件发送的功能,还是很简单、方便的。大致流程如下所示:
pom.xml 引入邮件发送启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
通过JavaMail的API完成邮件发送功能的代码封装,此处直接提供的工具类
- 抽取接口
public interface MailService {
void sendSimpleMail(String to, String subject, String content);
void sendHtmlMail(String to, String subject, String content);
void sendAttachmentsMail(String to, String subject,String content, String filePath);
void sendInlineResourceMail(
String to, String subject,
String content, String rscPath, String rscId);
}
- 实现类
@Slf4j
@Component
@Data
@ConfigurationProperties(prefix = "spring.mail")
public class MailUtil implements MailService{
@Autowired
private JavaMailSender mailSender; //springboot提供的邮件发送的api
private String from;//获取发件人的邮箱地址
@Override
public void sendSimpleMail(String to, String subject, String content) {
log.info("from===="+from);
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from); //发件人
message.setTo(to); //收件人
message.setSubject(subject); //邮件主题
message.setText(content); //邮件内容,只能纯文本
try {
mailSender.send(message);
log.info("简单邮件已经发送。");
} catch (Exception e) {
e.printStackTrace();
log.error("发送简单邮件时发生生异常!", e);
}
}
@Override
public void sendHtmlMail(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
try {
// true 表示需要创建一一个 multipart message