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. CentOS7安装RabbitMQ,并设置远程访问

      如果网速慢 可以直接到百度云分享中下载,然后拉到centerOS中,进行第二步即可    两个人安装包地址,提取码:z1oz 1.安装erlang环境 wget http://www.rabbit ...

  2. python安装 hanlp +使用 坑坑坑。。。填填填。。。

    刚开始用都不知道要怎么安装,包括什么文件.百度了下发现正常安装就可以用,不用下多余的东西,但是但是但是但是但是但是但是但是 用pycharm安装不行,pip安装不行,也是见鬼了. 解决方法: 1.手动 ...

  3. C++ 数组输出

    C++中输出数组数据分两种情况:字符型数组和非字符型数组 当定义变量为字符型数组时,采用cout<<数组名; 系统会将数组当作字符串来输出,如: ]={'}; cout << ...

  4. scrapy爬虫框架windows下的安装问题

    windows操作系统   python版本是3.6.0       通过Anaconda命令conda install scrapy安装scrapy,安装过程中没有问题.   然后在命令行输入命令准 ...

  5. 《PHP7底层设计与源码实现》学习笔记2——结构体对齐

    书里给了一段代码,假如有个结构体如下: struct test {     char a;     int b;     long c;     void* d;     int e;     cha ...

  6. markdown使用emoji

    前几日写博客的时候在想是否能够在markdown中使用emoji呢

  7. mvc_1_ex_stu_manage

    Mvc第一遍结束综合练习:带权限的学生管理系统程序的设计应该根据功能来进行.先来设想一下本练习的程序功能:学生信息管理.登录用户区分权限.出错应该给出提示.由此可以设想,完成以后的程序是下图的样子:主 ...

  8. keras学习入门一

    基本概念 1. 张量 tensor 所有的数据类型都可以看成是张量,可以看成是向量,矩阵在推广 张量的阶,有时候也叫维度,或是轴(axis) 0阶张量如 [] ,5 也叫做标量 1阶张量 如 [ 1, ...

  9. 基于RSA的WEB前端密码加密方案

    受制于WEB页面源码的暴露,因此传统的对称加密方案以及加密密钥都将暴露在JS文件中,同样可以被解密. 目前比较好的解决方案是WEB页面全程或用户登录等关键环节使用HTTPS进行传输. 另外一种解决方案 ...

  10. Maven打包的三种方式

    Maven可以使用mvn package指令对项目进行打包,如果使用Java -jar xxx.jar执行运行jar文件,会出现"no main manifest attribute, in ...