相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送,在Spring Boot的Starter模块中也为此提供了自动化配置 。
【SpringBoot-JavaMailSender接口实战】下面通过实例来讲解如何在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
是关于邮件服务器的配置信息,具体源码如下:@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<>();}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 巧用VBA实现:基于多个关键词模糊匹配Excel多行数据
- 蜂鸟是国家保护动物吗
- 时实是什么
- 贫血会造成什么后果
- 琉璃中司凤的真实身份是什么
- 详解ROMA Connect API 流控实现技术
- Object Detection 手把手教你使用LabVIEW OpenCV dnn实现物体识别含源码
- 实时营销引擎在vivo营销自动化中的实践 | 引擎篇04
- 如何学习实心球:实心球提高
- 口袋妖怪火红版宠物的性格特点