springboot集成mail实现邮件服务
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实现邮件服务的更多相关文章
- Springboot 系列(十三)使用邮件服务
在我们这个时代,邮件服务不管是对于工作上的交流,还是平时的各种邮件通知,都是一个十分重要的存在.Java 从很早时候就可以通过 Java mail 支持邮件服务.Spring 更是对 Java mai ...
- 创建基于MailKit和MimeKit的.NET基础邮件服务
邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Net.Mail用于创建邮件服务,该基础服务提供邮件的基础 ...
- MailKit和MimeKit的.NET基础邮件服务
MailKit和MimeKit的.NET基础邮件服务 邮件服务是一般的系统都会拥有和需要的功能,但是对于.NET项目来说,邮件服务的创建和使用会较为的麻烦..NET对于邮件功能提供了System.Ne ...
- springboot 邮件服务
springboot仍然在狂速发展,才五个多月没有关注,现在看官网已经到1.5.3.RELEASE版本了.准备慢慢在写写springboot相关的文章,本篇文章使用springboot最新版本1.5. ...
- 五、springboot 简单优雅是实现邮件服务
前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写啦. 之前我们配置好mybatis 多数据源的,接下来我们需要做一个邮件服务.比如你注册的时候,需要输入验证码来校 ...
- Springboot】Springboot整合邮件服务(HTML/附件/模板-QQ、网易)
介绍 邮件服务是常用的服务之一,作用很多,对外可以给用户发送活动.营销广告等:对内可以发送系统监控报告与告警. 本文将介绍Springboot如何整合邮件服务,并给出不同邮件服务商的整合配置. 如图所 ...
- SpringBoot整合Mail发送邮件&发送模板邮件
整合mail发送邮件,其实就是通过代码来操作发送邮件的步骤,编辑收件人.邮件内容.邮件附件等等.通过邮件可以拓展出短信验证码.消息通知等业务. 一.pom文件引入依赖 <dependency&g ...
- SpringBoot集成邮件发送
一:简述 在日常中的工作中难免会遇到程序集成邮件发送功能.接收功能:此篇文章我将使用SpringBoot集成邮件发送功能和接收功能:若对邮件一些基本协议和发送流程不懂的请务必参考我之前写的博客或者浏览 ...
- spring-boot(六) 邮件服务
学习文章来自:springboot(十):邮件服务 简单使用 1.pom包配置 pom包里面添加spring-boot-starter-mail包引用 <dependencies> < ...
随机推荐
- jquery如何遍历table,并对table里的某一个单元格进行操作
1.如何根据每一行的某一列的值进行比较或其他操作,进而修改另一列的值或属性. $("#table_id tbody tr").each(function(){ var a = $( ...
- Python3+PyCryptodome实现各种加密算法教程
一.说明 PyCryptodome是python一个强大的加密算法库,可以实现常见的单向加密.对称加密.非对称加密和流加密算法.直接pip安装即可: pip install pycryptodome ...
- MQTTv5.0 ---AUTH – 认证交换
AUTH报文被从客户端发送给服务端,或从服务端发送给客户端,作为扩展认证交换的一部分,比如质询/ 响应认证.如果CONNECT报文不包含相同的认证方法,则客户端或服务端发送AUTH报文将造成协议错 误 ...
- SQL Server的唯一键和唯一索引会将空值(NULL)也算作重复值
我们先在SQL Server数据库中,建立一张Students表: CREATE TABLE [dbo].[Students]( ,) NOT NULL, ) NULL, ) NULL, [Age] ...
- C#:Json字符串、JsonArray字符串处理
今天在做Asp网站开发的时候接受到了一种下面这种样子的字符串: "[ { "mid": "123456", "nid": &quo ...
- framework7 Autocomplete (自动完成) 具体使用
官网地址:https://framework7.io/docs/autocomplete.html#autocomplete-parameters 效果图: <meta charset=&quo ...
- Visual Studio 技巧
Visual Studio 技巧 1 常用设置 2 常用快捷键 2.1 系统默认快捷键 2.2 自定义快捷键 3 修复系统错误 1 常用设置 Text Editor -> All Languag ...
- Spring Boot 框架下使用MyBatis访问数据库之基于XML配置的方式
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...
- Java梗概
Java平台:J2SE(桌面).J2ME(逐渐被android取代).J2EE(企业级针对web程序) Java是在JVM虚拟机上运行,跨平台本质是在不同平台上运行JVM虚拟机 JRE = JVM+核 ...
- Kafka Streams开发入门(3)
背景 上一篇我们介绍了Kafka Streams中的消息过滤操作filter,今天我们展示一个对消息进行转换Key的操作,依然是结合一个具体的实例展开介绍.所谓转换Key是指对流处理中每条消息的Key ...