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. c++ builder调用sql server的存储过程进行数据的下载和上传

    小小的几行代码,在这里搞了一天.好好的一个周六过的无比的难受.代码很简单,但是主要原因是因为在用合作商的软件上传数据的时候有些框框没有勾选. come on....... 1.用两个控件ADOConn ...

  2. c语言错题本

    ()malloc(sizeof()) 在stdlib.h包中

  3. Akka-CQRS(7)- CQRS Reader Actor 示范

    我们在这篇通过一个具体CQRS-Reader-Actor的例子来示范akka-persistence的query端编程和应用.在前面的博客里我们设计了一个CQRS模式POS机程序的操作动作录入过程,并 ...

  4. docker系列之三:docker实际应用

    以Docker为基础完成持续集成.自动交付.自动部署: 原理: RD推送代码到git 仓库或者svn等代码服务器上面,git服务器就会通过hook通知jenkins. jenkine 克隆git代码到 ...

  5. SQL Server 中获取一个表的字段信息

    直接贴代码了: SELECT sysobjects.name AS TableName, syscolumns.Id AS TableId, syscolumns.name AS DbColumnNa ...

  6. ubuntu18 docker中部署ELK

    ELK是ElasticSearch.Logstash.Kibana的简称,一般用于日志系统,从日志收集,日志转储,日志展示等入手,用以提供简洁高效的日志处理机制. 鉴于没有额外的机器,这里就用dock ...

  7. python 笔记——生成器和迭代器

    #-*- coding:utf-8 -*- a=[1,2,3,4] for i,j in enumerate(a): print i,j '''只有ij时,''' a=[1,2,3,4] for i ...

  8. Python批量更改文件名

    一.问题在处理文件或者一些其他信息的时候我们需要更改文件名,那么我们可以写一个程序来修改这些文件名,以减少我们重复的做一件事. 二.解决本次使用的Python,利用的是Python中的OS模块,具体操 ...

  9. [CF254C]Anagram(2019-11-15考试)

    题目大意 给你两个长度相同的字符串\(A,B\),要求改变字符串\(A\)中最少的字符,使得字符串\(A\)在排序后和字符串\(B\)相同.输出改变后的字符串\(A\),若多解,输出字典序最小的.\( ...

  10. FusionInsight大数据开发---Kafka应用开发

    Kafka应用开发 了解Kafka应用开发适用场景 熟悉Kafka应用开发流程 熟悉并使用Kafka常用API 进行Kafka应用开发 Kafka的定义Kafka是一个高吞吐.分布式.基于发布订阅的消 ...