博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot邮件推送功能
阅读量:6986 次
发布时间:2019-06-27

本文共 6728 字,大约阅读时间需要 22 分钟。

鞠躬,道歉

抱歉,迟到了近一年的更新,这一年挺忙的,发生了很多事情,就厚脸皮拖更了,抱歉。

现在状态回来了,打算分享下近期学到的东西,这一年期间学到的东西可能会随意更新,其实也就是玩了下C# + unity3D,本来打算做个长期项目,但是申报比赛连预选都没有过,预选都是垫底的。项目展示视频见这个。还有就是和学院老师做了智慧博物馆的项目,文物的建模与AR以及互动小游戏都有参与。

but,从去年10月份开始又重新开始学Java和SSM的一些东西,上面说的以后应该没有机会玩了,AR倒是有时间可以分享给大家,但是项目那些演示视频暂时不方便公开。教程的话网上蛮多的,我用的是这个,和unity3D契合度蛮高的。想玩的朋友可以去弄弄,挺简单的。

之前一个。

正题

挺长时间了,一直在学Spring、SpringMVC、SpringBoot、Mybatis这些,但是感觉学了蛮久但不精通,也就不敢乱分享高深的。现在在做一个系统,需要发送邮件给用户,网上找了一圈相关博客,参考大佬做了自己的一个记录。也借机回归一周一更的状态,不写点东西对不起大家,嘿嘿。

在我们平时,时常需要利用邮箱注册各种各样的账号或者接收一些通知信息。这使得一个功能完善的系统必然会有一个邮件发送功能。下面就是我近期学习的一个邮件发送系统demo。

介绍

Spring项目中,邮件发送使用Spring提供的org.springframework.mail.javamail.JavaMailSender,它提供了一些简单易用的方法,可以发送简单邮件带附件的邮件HTML格式的邮件、以及依靠固定模板的邮件

引入pom.xml依赖

org.springframework.boot
spring-boot-starter-mail

配置(记得重新配置发件邮箱及密码)

请修改username及password为你的发件邮箱,各平台发件密码规格不一样,切需要卡通smtp功能,请看各平台要求。

之前用QQ邮箱要求配置后,测试好多次都无法发送,建议使用其他邮箱,笔者用163邮箱,但各位注意163邮箱默认在邮件后附带推广,记得在设置中关闭,之前测试的时候很坑。

server:  port: 8080spring:  mail:    host: smtp.163.com    username: 123456789@163.com    password: 123456789    properties:      mail:        smtp:          auth: true          starttls:            enable: true            required: true

发送简单邮件代码展示

// 简单邮件@RequestMapping("sendSimpleEmail")public String sendSimpleEmail() {    try {        SimpleMailMessage message = new SimpleMailMessage();        message.setFrom(from);        message.setTo(toEmail); // 接收地址,可传入数组进行群发        message.setSubject("新年好"); // 标题        message.setText("新年快乐,完事大吉\n 新年新气象"); // 内容        javaMailSender.send(message);        return "发送成功";    } catch (Exception e) {        e.printStackTrace();        return e.getMessage();    }}

启动项目,发送 http://localhost:8080/email/sendSimpleEmail 即可发送邮件

结果如下:
1084569-20190330104427206-1837462766.png

完整示例(记得更换目标邮箱)

请看以下代码,或GitHub地址clone项目查看,有完整注释。

package com.mxwbq.demo.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.FileSystemResource;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.thymeleaf.TemplateEngine;import org.thymeleaf.context.Context;import javax.mail.internet.MimeMessage;import java.io.File;/** * Created by mxwbq on 2019/3/29. */@RestController@RequestMapping("/email")public class EmailController {    @Autowired    private JavaMailSender javaMailSender;    @Value("${spring.mail.username}")    private String from;    // 目标邮箱地址,记得更换    private String toEmail = "123456789@163.com";    @Autowired    private TemplateEngine templateEngine;    // 简单邮件    @RequestMapping("sendSimpleEmail")    public String sendSimpleEmail() {        try {            SimpleMailMessage message = new SimpleMailMessage();            message.setFrom(from);            message.setTo(toEmail); // 接收地址,可传入数组进行群发,下同            message.setSubject("新年好"); // 标题            message.setText("新年快乐,完事大吉\n 新年新气象"); // 内容            javaMailSender.send(message);            return "发送成功";        } catch (Exception e) {            e.printStackTrace();            return e.getMessage();        }    }    // 发送Html格式邮件    @RequestMapping("sendHtmlEmail")    public String sendHtmlEmail() {        MimeMessage message = null;        try {            message = javaMailSender.createMimeMessage();            MimeMessageHelper helper = new MimeMessageHelper(message, true);            helper.setFrom(from);            helper.setTo(toEmail); // 接收地址            helper.setSubject("HTML格式的邮件"); // 标题            // 带HTML格式的内容            StringBuffer sb = new StringBuffer(                    "

使用Spring Boot发送HTML格式邮件

" + "

这里是正文:

" + "

这里是听雨轩地址:www.nucode.cn

"); helper.setText(sb.toString(), true); // 第二个参数 true 代表规定邮件格式为HTML javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送邮件携带附件 @RequestMapping("sendAttachmentsMail") public String sendAttachmentsMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("带附件的邮件"); // 标题 helper.setText("详情参见附件内容!"); // 内容 // 传入附件 FileSystemResource file = new FileSystemResource(new File("src\\main\\resources\\static\\file\\SpringBoot_Email文档.docx")); helper.addAttachment("SpringBoot_Email文档.docx", file); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送附带静态资源的邮件 @RequestMapping("sendInlineMail") public String sendInlineMail() { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("带静态资源的邮件"); // 标题 helper.setText("生日快乐:", true); // 内容 // 传入附件 FileSystemResource file = new FileSystemResource(new File("src/main/resources/static/img/礼物.jpg")); helper.addInline("img", file); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } } // 发送模板邮件 @RequestMapping("sendTemplateEmail") public String sendTemplateEmail(String registerURL) { MimeMessage message = null; try { message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(from); helper.setTo(toEmail); // 接收地址 helper.setSubject("邮件模板测试"); // 标题 // 处理邮件模板 Context context = new Context(); context.setVariable("registerURL", registerURL); String template = templateEngine.process("register", context); helper.setText(template, true); javaMailSender.send(message); return "发送成功"; } catch (Exception e) { e.printStackTrace(); return e.getMessage(); } }}

项目GitHub地址

说明

本文参考自MrBird大佬的博客:,有删改及自我实操问题汇总。

新的开始,不再颓废。

谢谢大家


以上

转载于:https://www.cnblogs.com/mxwbq/p/10625612.html

你可能感兴趣的文章
揭秘ThreadLocal
查看>>
七年蜕变 感恩献礼
查看>>
共享经济、短视频、新零售、AI:寻觅2019年新经济未来走向
查看>>
zabbix配置邮箱报警
查看>>
使用ulimit设置文件最大打开数
查看>>
[Step By Step]SAP HANA PAL指数回归预测分析Exponential Regression编程实例EXPREGRESSION(模型)...
查看>>
VMware Data Recovery备份恢复vmware虚拟机
查看>>
solr多core的处理
查看>>
解决DeferredResult 使用 @ResponseBody 注解返回中文乱码
查看>>
C# WinForm开发系列 - TextBox
查看>>
28岁少帅统领旷视南京研究院,LAMDA魏秀参专访
查看>>
java文件传输
查看>>
Xen虚拟机迁移技术
查看>>
安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法。
查看>>
[.NET领域驱动设计实战系列]专题八:DDD案例:网上书店分布式消息队列和分布式缓存的实现...
查看>>
Icomparer和Icomparable集合排序
查看>>
【poi xlsx报错】使用POI创建xlsx无法打开
查看>>
UNIX环境高级编程笔记之文件I/O
查看>>
DIV+CSS规范命名
查看>>
我的2013 Q.E.D
查看>>