1,新建mailconfig类,对邮件服务固定配置进行实体封装:

import java.util.Properties;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.mail.javamail.JavaMailSenderImpl;
@Configuration
public class MailConfig
{
@Value("${spring.mail.username}")
private String emailFrom; public String getEmailFrom() {
return emailFrom;
} public void setEmailFrom(String emailFrom) {
this.emailFrom = emailFrom;
} @Value("${spring.mail.host}")
private String mailHost;
@Value("${spring.mail.username}")
private String mailUsername;
@Value("${spring.mail.password}")
private String mailPassword;
@Value("${spring.mail.mailTemplate}")
private String mailTemplate;
@Value("${spring.mail.to}")
private String to;
@Value("${spring.mail.subject}")
private String subject;
@Value("${spring.mail.default-encoding}")
private String encoding;
@Value("${spring.mail.ccList}")
private String ccList; public void setCcList(String ccList)
{
this.ccList = ccList;
} public void setSubject(String subject)
{
this.subject = subject;
} public void setTo(String to)
{
this.to = to;
} public void setMailTemplate(String mailTemplate)
{
this.mailTemplate = mailTemplate;
} public void setMailPassword(String mailPassword)
{
this.mailPassword = mailPassword;
} public void setMailUsername(String mailUsername)
{
this.mailUsername = mailUsername;
} public void setMailHost(String mailHost)
{
this.mailHost = mailHost;
} public void setEncoding(String encoding)
{
this.encoding = encoding;
} public String getMailHost()
{
return this.mailHost;
} public String getMailUsername()
{
return this.mailUsername;
} public String getMailPassword()
{
return this.mailPassword;
} public String getMailTemplate()
{
return this.mailTemplate;
} public String getTo()
{
return this.to;
} public String getSubject()
{
return this.subject;
} public String getEncoding()
{
return this.encoding;
} public String getCcList()
{
return this.ccList;
} @Bean
public JavaMailSenderImpl mailSender()
{
JavaMailSenderImpl sender = new JavaMailSenderImpl();
Properties javaMailProperties = new Properties(); sender.setJavaMailProperties(javaMailProperties);
sender.setDefaultEncoding(this.encoding);
sender.setHost(this.mailHost); sender.setUsername(this.mailUsername);
sender.setPassword(this.mailPassword);
return sender;
}
}

2,在resources下的系统文件application.yml中添加如下配置:

spring:
mail:
host: smtp.qq.com
username: 发件人@qq.com
password: 授权码
default-encoding: UTF-8
to: 收件人@qq.com
subject: 邮件主题
mailTemplate: template.ftl(模板文件)
ccList: 抄送人@qq.com

3,新建Mail类,对调用信息进行实体封装:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Mail implements Serializable {
private static final long serialVersionUID = 1L;
//必填参数
private String to;//接收方邮箱
private String subject;//主题
private String ccList;//抄送人list//选填
private String template;//模板
private HashMap<String, String> kvMap;// 自定义model参数
}

4,定义MailService接口:

public interface MailService {
public void sendFreemarker(Mail mail); }

5,MailServiceImpl业务实现:

@Service
public class MailServiceImpl implements MailService {
private static final Logger log = LoggerFactory.getLogger(MailServiceImpl.class);
@Autowired
private JavaMailSender mailSender;
@Autowired
private MailConfig mailConfig;
@Autowired
private FreeMarkerConfigurer configurer; @Override
public void sendFreemarker(Mail mail)
{
try
{
MimeMessage mimeMessage = this.mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "utf-8");
helper.setFrom(this.mailConfig.getMailUsername());
helper.setTo(mail.getTo());
helper.setSubject(mail.getSubject());
helper.setCc(mail.getCcList());
File file = ResourceUtils.getFile("classpath:templates/report.ftl");//附件文件在resource下的相对路径
helper.addAttachment("report.html", file);//添加附件文件 Map<String, Object> model = new HashMap();
model.put("ReportData", mail);//reportData为模板文件中需要渲染的数据,根据自己需要添加,此处暂时用mail代替
try
{
Template template = this.configurer.getConfiguration().getTemplate(mail.getTemplate());//模板文件请自定义,内为邮件内容模板 ps:邮箱只能解析简单的html和css样式,复杂样式可能会乱码 try
{
String text = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);//获取模板文件和model数据
helper.setText(text, true);//添加ftl文件到邮件内容
this.mailSender.send(mimeMessage);//发送邮件
}
catch (Exception e)
{
e.printStackTrace();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
catch (MessagingException e)
{
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} }

6,邮件服务单元测试:

@Listeners({AutoTestListener.class, RetryListener.class})
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
@Import(TestApplication.class)
public class mailtest { @Test
public void mailsendtest() { Mail mail=new Mail();
mail.setTo("收件人@qq.com");
mail.setSubject("接口自动化定时任务_测试报告");
mail.setCcList("抄送人@qq.com");
mail.setTemplate("report.ftl");//模板文件
mailService.sendFreemarker(mail);
} }  

7,效果图如下:

以上就是对springboot集成mail实现邮件发送,后续使用都可以通过service注入然后进行使用或者封装啦~

 

springboot集成mail实现邮件服务的更多相关文章

  1. Springboot 系列(十三)使用邮件服务

    在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...

  2. 创建基于MailKit和MimeKit的.NET基础邮件服务

    邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...

  3. MailKit和MimeKit的.NET基础邮件服务

    MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...

  4. springboot 邮件服务

    springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了.准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5. ...

  5. 五、springboot 简单优雅是实现邮件服务

    前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...

  6. Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)

    介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...

  7. SpringBoot整合Mail发送邮件&发送模板邮件

    整合mail发送邮件,其实就是通过代码来操作发送邮件的步骤,编辑收件人.邮件内容.邮件附件等等.通过邮件可以拓展出短信验证码.消息通知等业务. 一.pom文件引入依赖 <dependency&g ...

  8. SpringBoot集成邮件发送

    一:简述 在日常中的工作中难免会遇到程序集成邮件发送功能.接收功能:此篇文章我将使用SpringBoot集成邮件发送功能和接收功能:若对邮件一些基本协议和发送流程不懂的请务必参考我之前写的博客或者浏览 ...

  9. spring-boot(六) 邮件服务

    学习文章来自:springboot(十):邮件服务 简单使用 1.pom包配置 pom包里面添加spring-boot-starter-mail包引用 <dependencies> < ...

随机推荐

  1. 桥接(Bridge)模式

    桥接模式又称为柄体模式或接口模式.桥接模式的用意就是"将抽象化与实现化解耦,使得二者可以独立变化". 抽象化: 存在于多个实体中的共同的概念性联系,就是抽象化.作为一个过程,抽象化 ...

  2. ubuntu 18 docker 搭建Prometheus+Grafana

    Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prometheus,社会也 ...

  3. Prometheus 重新标签

    Prometheus 重新标签 允许在采集之前对任何目标及其标签进行修改 • 重命名标签名 • 删除标签 • 过滤目标 action:重新标签动作 replace:默认,通过regex匹配source ...

  4. golang 学习笔记 -- 类型

    int 和 uint的实际宽度会根据计算架构不同而不同,386下4个字节, amd64下8个字节 byte可看做uint8的别名类型 rune可看做int32的别名类型,专用于存储Unicode编码的 ...

  5. 推荐一个GOLANG入门很好的网址

    推荐一个GOLANG入门很好的网址,栗子很全 https://books.studygolang.com/gobyexample/

  6. Java静态变量初始化的坑

    class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; pu ...

  7. AnimationClip压缩-动画文件压缩

    动画压缩方法一.常用方法1. Rig->Animation Type:改为Generic2. Animations->Anim.Compression:Optimal二.高级方法1. 去掉 ...

  8. Linux 脚本在线安装docker

    2019/11/28, CentOS 8, docker 19.03.5, docker-compose 1.25.0 摘要:CentOS8使用脚本安装docker,dnf安装rpm,安装docker ...

  9. jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jquery筛选方法

    jQuery---jq基础了解(语法,特性),JQ和JS的区别对比,JQ和JS相互转换,Jquery的选择器(基础选择器,层级选择器,属性选择器),Jquery的筛选器(基本筛选器,表单筛选器),Jq ...

  10. Vue.js前端MVVM框架实战篇

    相信大家对vue.js这个前端框架有了一定的了解.想必也想把Vue急切的运用在项目中,看看它的魅力到底有多大?别急,今天我会满足大家的想法. 我们一起来看看“Webpack+Vue”的开发模式相比以往 ...