相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置 。
下面通过实例来讲解如何在Spring Boot中使用JavaMailSender发送邮件 。
什么是SMTP?SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式 。SMTP认证要求必须提供账号和密码才能登陆服务器 , 其设计目的在于避免用户受到垃圾邮件的侵扰 。
什么是POP3?POP3全称为Post Office Protocol 3(邮局协议),POP3支持客户端远程管理服务器端的邮件 。POP3常用于“离线”邮件处理 , 即允许客户端下载服务器邮件 , 然后服务器上的邮件将会被删除 。目前很多POP3的邮件服务器只提供下载邮件功能,服务器本身并不删除邮件,这种属于改进版的POP3协议 。
传输协议SMTP协议发送邮件:我们通常把处理用户smtp请求(邮件发送请求)的服务器称之为SMTP服务器(邮件发送服务器) 。
POP3协议接收邮件:我们通常把处理用户pop3请求(邮件接收请求)的服务器称之为POP3服务器(邮件接收服务器) 。
进阶知识
- 什么是
JavaMailSender
和JavaMailSenderImpl
?
- 如何通过
JavaMailSenderImpl
发送邮件?‘
e,g:
@Autowiredprivate JavaMailSenderImpl mailSender;public void sendMail() throws MessagingException {//简单邮件SimpleMailMessage simpleMailMessage = new SimpleMailMessage();simpleMailMessage.setFrom("admin@163.com");simpleMailMessage.setTo("socks@qq.com");simpleMailMessage.setSubject("Happy New Year");simpleMailMessage.setText("新年快乐!");mailSender.send(simpleMailMessage);//复杂邮件MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage);messageHelper.setFrom("admin@163.com");messageHelper.setTo("socks@qq.com");messageHelper.setSubject("Happy New Year");messageHelper.setText("新年快乐!");messageHelper.addInline("doge.gif", new File("xx/xx/doge.gif"));messageHelper.addAttachment("work.docx", new File("xx/xx/work.docx"));mailSender.send(mimeMessage);}
- 为什么JavaMailSenderImpl 能够开箱即用 ?
所谓开箱即用其实就是基于官方内置的自动配置,翻看源码可知晓邮件自动配置类(MailSenderPropertiesConfiguration) 为上下文提供了邮件服务实例(JavaMailSenderImpl) 。具体源码如下:
@Configuration@ConditionalOnProperty(prefix = "spring.mail", name = "host")class MailSenderPropertiesConfiguration {private final MailProperties properties;MailSenderPropertiesConfiguration(MailProperties properties) {this.properties = properties;}@Bean@ConditionalOnMissingBeanpublic JavaMailSenderImpl mailSender() {JavaMailSenderImpl sender = new JavaMailSenderImpl();applyProperties(sender);return sender; }
其中MailProperties
是关于邮件服务器的配置信息,具体源码如下:【SpringBoot-JavaMailSender接口实战】
@ConfigurationProperties(prefix = "spring.mail")public class MailProperties {private static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;private String host;private Integer port;private String username;private String password;private String protocol = "smtp";private Charset defaultEncoding = DEFAULT_CHARSET;private Map<String, String> properties = new HashMap<>();}
实现1.开启邮件服务这里以QQ邮箱为例 。首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMTP服务>>>点击开启(开启需要验证 , 验证成功后会有一串授权码用于发送邮件使用)>>>验证成功
文章插图
文章插图
主要通过MailService工具类就可以满足发送java邮件的需要 。当我们进行好 yml 配置后,SpringBoot会帮助我们自动配置 JavaMailSender 我们通过这个java类就可以实现操作java来发送邮件 。
推荐阅读
- 巧用VBA实现:基于多个关键词模糊匹配Excel多行数据
- 详解ROMA Connect API 流控实现技术
- Object Detection 手把手教你使用LabVIEW OpenCV dnn实现物体识别含源码
- 实时营销引擎在vivo营销自动化中的实践 | 引擎篇04
- MatrixOne从入门到实战04——MatrixOne的连接和建表
- MatrixOne从入门到实践08——SSB性能测试
- 求笔仙的玩法真实的(亲身体验笔仙)
- 一 网络安全主动进攻之DNS基础和ettercap实现DNS流量劫持
- TCP和UDP的区别与联系以及网络字节序和主机字节序的转换函数实践
- 大数据技术之HBase原理与实战归纳分享-上