您的位置 首页 > 数码极客

126邮件如何延迟发送邮件

本文基于:Spring Boot 2.1.3,理论支持Spring Boot 2.x所有版本。

最近有童鞋问到笔者如何用Spring Boot发送邮件,故而整理下Spring Boot发送邮件的各种姿势。

说到邮件放松,相信大家对Spring Framework提供的接口 JavaMailSender 都不陌生。那么Spring Boot是否有开箱即用的邮件发送呢?

答案是肯定的。Spring Boot为发送邮件提供了starter:spring-boot-starter-mail 。

本文详细探讨如何用Spring Boot发送邮件。

一、邮箱配置

以126邮箱为例:

1 开启SMTP服务

2 设置/重置客户端授权密码

二、编码

2.1 准备工作

1 加依赖


<dependency> <groupId>org.;/groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>

2 写配置


spring: mail: host: username: eacdy0000@126.com password: 上面设置的授权码

2.2 发送简单邮件


public String simple() { SimpleMailmessage message = new SimpleMailMessage(); // 发件人邮箱 me()); // 收信人邮箱 me("511932633@qq.com"); // 邮件主题 me("简单邮件测试"); // 邮件内容 me("简单邮件测试"); (message); return "success"; }

结果类似下图:

2.3 发送html邮件

简单邮件是没有样式的,很多时候,我们希望发送的邮件内容带有样式,此时可发送HTML邮件。


public String html() throws MessagingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message); me()); me("511932633@qq.com"); me("HTML内容邮件测试"); // 第二个参数表示是否html,设为true me("<h1>HTML内容..</h1>", true); (message); return "success"; }

结果类似下图:

2.4 发送带附件的邮件

很多场景下,需要为邮件插入附件,此时该怎么办呢?继续上代码——


@GetMapping("/attach") public String attach() throws MessagingException { MimeMessage message = (); // 第二个参数表示是否开启multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); me()); me("511932633@qq.com"); me("带附件的邮件测试"); // 第二个参数表示是否html,设为true me("<h1>HTML内容..</h1>", true); me("附件名称", new ClassPathResource("wx.jpg")); (message); return "success"; }

结果类似下图:

2.5 发送带内联附件的邮件

附件 + HTML基本能满足日常工作中多数需求。但如果能将附件内联在邮件内容中,那么体验就更好啦!如何实现附件的内联呢?


@GetMapping("/inline-attach") public String inlineAttach() throws MessagingException { MimeMessage message = (); // 第二个参数表示是否开启multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); me()); me("511932633@qq.com"); me("内联附件的邮件测试"); // 第二个参数表示是否html,设为true me("<h1>HTML内容..<img src=\"cid:attach\"/></h1>", true); me("attach", new ClassPathResource("wx.jpg")); (message); return "success"; }

由代码可知,只需在想要内联的地方使用 cid:xx 引用内联附件,然后用 addInline(xx, file)指定附件即可。两处的 xx 必须一致。

结果类似下图:

2.6 发送基于freemarker模板的邮件

上面的例子中,邮件内容是直接以字符串体现的,这通常不适合生产,因为实际项目中邮件往往带有变量。此时,可考虑使用Freemarker模板(或者其他模板,Spring Boot 2.x默认支持Freemarker、Groovy、Thymeleaf、Mustache四种模板引擎,也可根据需求使用其他模板引擎)。

创建Freemarker模板文件mail.ftl,并将其存放在resources/templates/ 目录中


<h1>亲爱的${username}, 欢迎关注${event}</h1>

编码:


@GetMapping("/freemarker") public String freemarker() throws MessagingException, IOException, TemplateException { MimeMessage message = (); // 第二个参数表示是否开启multipart模式 MimeMessageHelper messageHelper = new MimeMessageHelper(message, true); me()); me("511932633@qq.com"); me("基于freemarker模板的邮件测试"); Map<String, Object> model = new HashMap<>(); model.put("username", "itmuch"); model.put("event", "IT牧场大事件"); String content = FreeMarkerTem( ("mail.ftl"), model); // 第二个参数表示是否html,设为true me(content, true); (message); return "success"; }

此时,结果类似下图:

三、配套代码

•GitHub[1]

•Gitee[2]

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

•001:《Java并发与高并发解决方案》学习笔记;

•002:《深入JVM内核——原理、诊断与优化》学习笔记;

•003:《Java面试宝典》

•004:《Docker开源书》

•005:《Kubernetes开源书》

•006:《DDD速成(领域驱动设计速成)》

References

[1] GitHub:

[2] Gitee:

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“126邮件如何延迟发送邮件,如何延迟发送邮件时间”边界阅读