SpringBoot第十九篇:邮件服务
作者:追梦1819
原文:https://www.cnblogs.com/yanfei1819/p/11118340.html
版权声明:本文为博主原创文章,转载请附上博文链接!
引言
邮件的重要性也无需多说了,例如注册验证,消息通知,系统异常提醒等,都离不开邮件的发送。
版本信息
- JDK:1.8
- SpringBoot :2.1.4.RELEASE
- maven:3.3.9
- IDEA:2019.1.1
- mail:2.1.4.RELEASE
使用
本示例演示的是 SpringBoot 项目发送邮件。
首先,创建项目,引入 maven 依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.1.4.RELEASE</version>
</dependency>
然后,在 application.properties 中配置相关信息:
spring.mail.username=xxx@xyz.com
spring.mail.password=xxxxxxspring.mail.host=smtp.xx.com
spring.mail.properties.mail.smtp.ssl.enable=true
最后,测试代码:
package com.yanfei1819.mail;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.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.test.context.junit4.SpringRunner;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;@RunWith(SpringRunner.class)
@SpringBootTest
public class MailApplicationTests {@Autowiredprivate JavaMailSenderImpl sender;@Testpublic void contextLoads() {SimpleMailMessage message = new SimpleMailMessage();message.setSubject("开会");message.setText("今晚6点开会");message.setTo("xxx@163.com");message.setFrom("xxx@xyz.com");sender.send(message);}
}
在收件箱中可以查看到对应结果。
上述是发送一封简单的邮件。如何发送一封复杂的邮件呢,可以发送附件的那种?
其实也很简单,其余的配置都相同。重新写一个测试方法:
@Testpublic void test() throws MessagingException {// 创建邮件MimeMessage message = sender.createMimeMessage();final MimeMessageHelper hepler = new MimeMessageHelper(message,true);// 邮件设置hepler.setSubject("开会");hepler.setText("<b>今晚6点开会</b>",true);hepler.setTo("xxx@163.com");hepler.setFrom("xxx@xyz.com");// 发送附件hepler.addAttachment("mybatis源码",new File("C:\\Users\\Administrator\\Desktop\\MyBatis源码分析.md"));// 邮件发送sender.send(message);}
运行,可以查看结果。
相关源码
SpringBoot 邮件发送是不是很简单?只需要开发者注意几个需要配置的属性和组件即可。没有太多的复杂的代码。
下面我们看看在源码中是如何实现的。
先找到 spring-boot-autoconfigure-2.1.4.RELEASE.jar 下面的 mail 包,仔细查看 MailSenderPropertiesConfiguration
类,其中
@Bean@ConditionalOnMissingBeanpublic JavaMailSenderImpl mailSender() {JavaMailSenderImpl sender = new JavaMailSenderImpl();applyProperties(sender);return sender;}
即为邮件发送组件。读者可以深入了解自动配置原理。
关于邮件的配置属性,都在 MailProperties
中:
package org.springframework.boot.autoconfigure.mail;import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.context.properties.ConfigurationProperties;@ConfigurationProperties(prefix = "spring.mail")
public class MailProperties {private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;/*** SMTP server host. For instance, `smtp.example.com`.*/private String host;/*** SMTP server port.*/private Integer port;/*** Login user of the SMTP server.*/private String username;/*** Login password of the SMTP server.*/private String password;/*** Protocol used by the SMTP server.*/private String protocol = "smtp";/*** Default MimeMessage encoding.*/private Charset defaultEncoding = DEFAULT_CHARSET;/*** Additional JavaMail Session properties.*/private Map<String, String> properties = new HashMap<>();/*** Session JNDI name. When set, takes precedence over other Session settings.*/private String jndiName;// set/get 省略
}
转载于:https://www.cnblogs.com/yanfei1819/p/11118340.html
SpringBoot第十九篇:邮件服务相关推荐
- Springboot(十):邮件服务
发送邮件应该是网站的必备功能之一,什么注册验证,忘记密码或者是给用户发送营销信息.最早期的时候我们会使用javaMail相关api来写邮件相关代码,后来spring退出了javaMailSender ...
- springboot 第十九节 starter and muti_datasource 多数据源
springboot 第十九节 starter and muti_datasource 多数据源 1. spring.datasource.spring.driverClassName=com.mys ...
- CCNP-第十九篇-ISIS(二)
CCNP-第十九篇-ISIS(二) 首先来个对比的通信机制 首先呢,工作环境中,他没OSPF那么复杂哈,然后 底层启了ISIS,通了就不用管它了 实验环境 注意,上图是错误示范哦! 为什么呢? 为啥呢 ...
- Zsh 开发指南(第十九篇 脚本实例讲解)
导读 本文将讲解一些比较简单的 zsh 脚本实例. 实例一:复制一个目录的目录结构 功能: 将一个目录及它下边的所有目录复制到另一个目录中(即创建同名目录),但不复制目录下的其他类型文件. 例子: s ...
- 世界上最经典的十九篇爱情短文
世界上最经典的十九篇爱情短文 (一)开始的开始总是甜蜜的 后来就有了厌倦.习惯.背弃.寂寞.绝望和冷笑 曾经渴望与一个人长相厮守,后来,多么庆幸自己离开了 曾几何时,在一段短暂的时光里, 我们以为自己 ...
- 五、springboot 简单优雅是实现邮件服务
文章目录 前言 邮箱服务器准备 添加依赖和配置 Service 层 controller层 测试 发送附件 番外 前言 spring boot 的项目放下小半个月没有更新了,终于闲下来可以开心的接着写 ...
- Android UI开发第三十九篇——Tab界面实现汇总及比较
Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇--ActivityGroup实现tab功能>.这 ...
- SpringBoot第十六篇:用restTemplate消费服务
这篇文章主要介绍怎么用消费一个 Restful的web服务.我将用restTemplate去消费一个服务: http://gturnquist-quoters.cfapps.io/api/random ...
- SpringBoot第二十二篇: 创建含有多module的springboot工程
这篇文章主要介绍如何在springboot中如何创建含有多个module的工程,栗子中含有两个 module,一个作为libarary. 工程,另外一个是主工程,调用libary .其中libary ...
最新文章
- js实现模态框点击空白关闭
- 需求分析读书笔记(一)
- Document,Node,Element,HTMLDocument ,HTMLCollection,HTMLElement,NodeList
- python写文件追加 按行追加_Python3 自学第14天:文件操作,文件句柄,上下文管理器...
- Eclipse中在线安装spring-tool-suite插件
- erlang精要(31)-尾递归版的翻转列表
- 6-堆排序C实现(递增递减的简单转换,可优化(41行提示))
- 2015级C++第2周实践项目
- struts數據庫訪問
- 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
- 中移4G模块-ML302-OpenCpu开发-前端网页搭建
- JAVA引用aar_AndroidStudio之如何引入和使用aar包
- groovy和java结合使用
- 如何在linux下运行php脚本,如何通过Linux命令行使用和运行PHP脚本
- mybatis 实现批量更新
- ckc交易什么意思_期货交易中的标准仓单充抵保证金是什么意思?
- ESIX群晖NAS安装教程
- 南水北调工程简介及线路图
- 中国足球深度剖析之五,破除周期性怪圈
- 云计算 IaaS PaaS SaaS 基础概念和区别终于搞清楚了
热门文章
- 让天下没有难Tuning的大模型:PEFT技术简介
- Mac brew升级go到指定版本
- 干货 | 全面解析“数字经济”
- 链表反转(指定区间)
- cad拉伸怎么用_三维绘图:203页的CAD三维绘图基础知识,提高绘图效率全靠它
- Windows系统下基于开源软件的多物理场仿真
- Cocos2d_iphone游戏开发_视频教程__国内顶级专业IOS培训机构__(内部资料不外传)
- uniapp 微信小程序 搜索框滚动固定
- 开放小程序插件功能,小程序插件的使用
- python火车票查询器