Springboot实现发送邮件

本文实例为大家分享了Springboot实现发送邮件功能的具体代码,供大家参考,具体内容如下
第一章 背景介绍 1.1 使用场景
1、注册验证;
2、网站营销;
3、安全的最后一道防线;
4、提醒、监控警告;
5、触发机制。

1.2 邮件发送原理
1.邮件传输协议:SMTP协议和POP3协议
2.内容不断发展:IMAP和Mme协议

1.3 邮件发送流程
Springboot实现发送邮件
文章图片

第二章 使用SpringBoot完成邮件发送 2.1 开发流程
Springboot实现发送邮件
文章图片

【Springboot实现发送邮件】2.2 开发简单文本邮件
2.2.1 引入相关jar包
在pom.xml中添加依赖

org.springframework.bootspring-boot-starter-mail

2.2.2 配置邮箱参数
在配置文件里面配置:这里的密码是授权码,不是网页上的密码
spring.mail.host=smtp.163.comspring.mail.username=XXX@163.comspring.mail.password=XXXspring.mail.default-encoding=utf-8

2.2.3 封装SimpleMailMessage
SimpleMailMessage message = new SimpleMailMessage();

2.2.4 JavaMailSender进行发送
@Autowiredprivate JavaMailSender mailSender; //使用JavaMailSender发送邮件mailSender.send(message);

具体的实现:
/** * @Description: 发送邮件 * @Author: yzy * @Date:2021/10/19 14:01 **/@Servicepublic class MailService {@Value("${spring.mail.username}")private String sendPeople; @Autowiredprivate 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)@SpringBootTestpublic class MailTest {@Autowiredprivate MailService mailService; @Testpublic void sendSimpleMailTest() {mailService.sendSimpleMail("yzy20162362@163.com","这是一个简单的demo","哈哈哈,发送成功了!"); }}

启动:
Springboot实现发送邮件
文章图片

效果:
Springboot实现发送邮件
文章图片

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); }

@Testpublic 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); }

@Testpublic 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的页面:
邮件模板 - 锐客网你好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
激活账户>

测试代码:
@Testpublic 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实现发送邮件
文章图片

常见错误:
Springboot实现发送邮件
文章图片

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

    推荐阅读