Springboot实现发送邮件

本文实例为大家分享了Springboot实现发送邮件功能的具体代码,供大家参考,具体内容如下

第一章 背景介绍

1.1 使用场景

1、注册验证;

2、网站营销;

3、安全的最后一道防线;

4、提醒、监控警告;

5、触发机制。

1.2 邮件发送原理

1.邮件传输协议:SMTP协议和POP3协议

2.内容不断发展:IMAP和Mme协议

1.3 邮件发送流程

第二章 使用SpringBoot完成邮件发送

2.1 开发流程

2.2 开发简单文本邮件

2.2.1 引入相关jar包

在pom.xml中添加依赖

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-mail</artifactId>

</dependency>

2.2.2 配置邮箱参数

在配置文件里面配置:这里的密码是授权码,不是网页上的密码

spring.mail.host=smtp.163.com

spring.mail.username=XXX@163.com

spring.mail.password=XXX

spring.mail.default-encoding=utf-8

2.2.3 封装SimpleMailMessage

SimpleMailMessage message = new SimpleMailMessage();

2.2.4 JavaMailSender进行发送

@Autowired

private JavaMailSender mailSender;

//使用JavaMailSender发送邮件

mailSender.send(message);

具体的实现:

/**

* @Description: 发送邮件

* @Author: yzy

* @Date: 2021/10/19 14:01

**/

@Service

public class MailService {

@Value("${spring.mail.username}")

private String sendPeople;

@Autowired

private JavaMailSender mailSender;

/**

* @Description: 发送文本文件

* @author: yzy

* @date: 2021/10/19 14:01

* @Param:

* @return:

*/

public void sendSimpleMail(String to,String subject,String content) {

SimpleMailMessage message = new SimpleMailMessage();

//接收方

message.setTo(to);

//发送邮件的主题

message.setSubject(subject);

//发送邮件内容

message.setText(content);

//发送人

message.setFrom(sendPeople);

//使用JavaMailSender发送邮件

mailSender.send(message);

}

}

测试:

package com.yzy.restaurant.mapper;

import com.yzy.restaurant.MailService;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)

@SpringBootTest

public class MailTest {

@Autowired

private MailService mailService;

@Test

public void sendSimpleMailTest() {

mailService.sendSimpleMail("yzy20162362@163.com","这是一个简单的demo","哈哈哈,发送成功了!");

}

}

启动:

效果:

2.3 开发HTML邮件

上代码,在MailService 和MailTest 加

/**

* @Description: 发送html邮寄

* @author: yzy

* @date: 2021/10/19 14:58

* @Param:

* @return:

*/

public void sendMailHtml(String to,String subject,String content) throws MessagingException {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message,true);

helper.setTo(to);

helper.setSubject(subject);

helper.setText(content,true);

helper.setFrom(sendPeople);

mailSender.send(message);

}

/**

* @Description: 发送html邮寄

* @author: yzy

* @date: 2021/10/19 14:58

* @Param:

* @return:

*/

public void sendMailHtml(String to,String subject,String content) throws MessagingException {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message,true);

helper.setTo(to);

helper.setSubject(subject);

helper.setText(content,true);

helper.setFrom(sendPeople);

mailSender.send(message);

}

2.3 开发附件邮件

上代码,在MailService 和MailTest 加

/**

* @Description: 发送附件邮件

* @author: yzy

* @date: 2021/10/19 15:12

* @Param:

* @return:

*/

public void sendAttachmentsMail(String to,String subject,String content,String filePath) throws MessagingException {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message,true);

helper.setTo(to);

helper.setSubject(subject);

helper.setText(content,true);

helper.setFrom(sendPeople);

//读取

FileSystemResource file = new FileSystemResource(new File(filePath));

//获取文件名

String filename = file.getFilename();

//设置附件

helper.addAttachment(filename,file);

//发送

mailSender.send(message);

}

@Test

public void sendAttachmentsMailTest() throws MessagingException {

String filePath = "D:/玖佳智能 2020年3月第3周周工作汇总(3月16-3月20日)(1).xlsx";

mailService.sendAttachmentsMail("yzy20162362@163.com","这是一封附件邮件","哈哈哈,附件邮件发送成功了",filePath);

}

2.4 图片邮件

上代码,在MailService 和MailTest 加

/**

* @Description: 带图片邮件

* @author: yzy

* @date: 2021/10/19 15:35

* @Param:

* @return:

*/

public void sendPhotoMail(String to,String subject,String content,String rscPath, String rscId) throws MessagingException {

MimeMessage message = mailSender.createMimeMessage();

MimeMessageHelper helper = new MimeMessageHelper(message,true);

helper.setTo(to);

helper.setSubject(subject);

helper.setText(content,true);

helper.setFrom(sendPeople);

//读取

FileSystemResource rec = new FileSystemResource(new File(rscPath));

helper.addInline(rscId,rec);

//发送

mailSender.send(message);

}

@Test

public void sendPhotoMailTest () throws MessagingException {

String imgPath = "C:\\Users\\yzy\\Desktop\\微信图片_20210917201828.jpg";

String rsc = "0001";

mailService.sendPhotoMail("yzy20162362@163.com","这是一封图片邮件","哈哈哈,图片邮件发送成功了",imgPath,rsc);

}

2.5 邮件模板

模板邮件特别适用于:

1.用户注册的邮件;2.忘记密码的邮件

我用的是thymeleaf,前提是themleaf已经配置好,上代码

新建emailTemplate的页面:

<!DOCTYPE html>

<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>

<meta charset="UTF-8">

<title>邮件模板</title>

</head>

<body>

你好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!<br>

<a rel="#" th:href="@{https://mail.163.com}" rel="external nofollow" >激活账户</a>>

</body>

</html>

测试代码:

@Test

public void sendTemplateMailTest () throws MessagingException {

Context content = new Context();

content.setVariable("id","111");

String emailContent = templateEngine.process("emailTemplate", content);

mailService.sendMailHtml("yzy20162362@163.com","这是一封模板邮件",emailContent);

}

效果:

常见错误:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 Springboot实现发送邮件 的全部内容, 来源链接: utcz.com/p/249929.html

回到顶部