SpringBoot邮件推送功能
鞠躬,道歉
抱歉,迟到了近一年的更新,这一年挺忙的,发生了很多事情,就厚脸皮拖更了,抱歉。
现在状态回来了,打算分享下近期学到的东西,这一年期间学到的东西可能会随意更新,其实也就是玩了下C# + unity3D,本来打算做个长期项目,但是申报比赛连预选都没有过,预选都是垫底的。项目展示视频见这个。还有就是和学院老师做了智慧博物馆的项目,文物的建模与AR以及互动小游戏都有参与。
but,从去年10月份开始又重新开始学Java和SSM的一些东西,上面说的以后应该没有机会玩了,AR倒是有时间可以分享给大家,但是项目那些演示视频暂时不方便公开。教程的话网上蛮多的,我用的是Vuforia这个,和unity3D契合度蛮高的。想玩的朋友可以去弄弄,挺简单的。
之前一个unity3D项目的展示视频。
正题
挺长时间了,一直在学Spring、SpringMVC、SpringBoot、Mybatis这些,但是感觉学了蛮久但不精通,也就不敢乱分享高深的。现在在做一个系统,需要发送邮件给用户,网上找了一圈相关博客,参考大佬做了自己的一个记录。也借机回归一周一更的状态,不写点东西对不起大家,嘿嘿。
在我们平时,时常需要利用邮箱注册各种各样的账号或者接收一些通知信息。这使得一个功能完善的系统必然会有一个邮件发送功能。下面就是我近期学习的一个邮件发送系统demo。
介绍
Spring项目中,邮件发送使用Spring提供的org.springframework.mail.javamail.JavaMailSender,它提供了一些简单易用的方法,可以发送简单邮件、带附件的邮件、HTML格式的邮件、以及依靠固定模板的邮件。
引入pom.xml依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
配置(记得重新配置发件邮箱及密码)
请修改username及password为你的发件邮箱,各平台发件密码规格不一样,切需要卡通smtp功能,请看各平台要求。
之前用QQ邮箱要求配置后,测试好多次都无法发送,建议使用其他邮箱,笔者用163邮箱,但各位注意163邮箱默认在邮件后附带推广,记得在设置中关闭,之前测试的时候很坑。
server:
port: 8080
spring:
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 即可发送邮件
结果如下:
完整示例(记得更换目标邮箱)
请看以下代码,或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(
"<h1><p style='color:#42b983'>使用Spring Boot发送HTML格式邮件</p></h1>" +
"<p>这里是正文:</p>" +
"<p>这里是听雨轩地址:www.nucode.cn</p>");
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("<html><body>生日快乐:<img src='cid:img'/></body></html>", 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地址
https://github.com/mxbq/SpringBoot_Study
说明
本文参考自MrBird大佬的博客:https://mrbird.cc/Spring-Boot-Email.html,有删改及自我实操问题汇总。
附
新的开始,不再颓废。
谢谢大家
以上
SpringBoot邮件推送功能的更多相关文章
- SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了
1.前言 上班的时候,无聊的时候,偶尔跑去百度看下热搜,所以就萌生出这种想法,通过邮件推送的方式实现效果,首先找到百度热搜的页面 热搜,话不多说,直接开干. 2.环境准备 因为是个SpringBoot ...
- 用ASP.NET Core 1.0中实现邮件发送功能-阿里云邮件推送篇
在上篇中用MailKit实现了Asp.net core 邮件发送功能,但一直未解决阿里云邮件推送问题,提交工单一开始的回复不尽如人意,比如您的网络问题,您的用户名密码不正确等,但继续沟通下阿里云客户还 ...
- Laravel 下结合阿里云邮件推送服务
最近在学习laravel做项目开发,遇到注册用户推送邮件的问题,之前用java做的时候是自己代码写的,也就是用ECS推送邮件,但是现在转php的laravel了就打算用php的邮件发送功能来推送邮件, ...
- RedMine项目管理系统邮件推送设置(Windows环境)
RedMine项目管理系统有邮箱推送功能,当Bug,安全漏洞等内容被修改.解决.评论的时候,系统会通过邮件 及时的通知你的团队和客户.邮件通知的环节.形式.时间.接受人均可定制,功能十分实用. 下面是 ...
- 基于FCM的消息推送功能
需求背景 我方项目需要支持客户端消息推送,iOS终端可以借由苹果本身的apns很方便的实现,但是对于Android来说,必须集成第三方的SDK来处理.考虑到项目需要以及成本,我们选择使用谷歌的FCM框 ...
- EasyDarwin流媒体服务器实现关键帧推送功能
-本篇由团队成员Fantasy供稿! 功能背景 随着社会进步,人们对产品体验要求越来越高.EasyDarwin也不例外.为了能满足用户对链接服 后看到画面时间(也就是我们经常看到的起播时间)短的要求, ...
- 基于EasyDarwin EasyPusher实现Android手机直播推送功能
EasyPusher直播推送在之前就已经稳定支持了Windows.Linux.ARM上的RTSP直播推送功能,配合EasyDarwin开源流媒体服务器,延时基本在1s以内,这个技术方案经过一年多时间, ...
- Asp.NET MVC 使用 SignalR 实现推送功能二(Hubs 在线聊天室 获取保存用户信息)
简单介绍 关于SignalR的简单实用 请参考 Asp.NET MVC 使用 SignalR 实现推送功能一(Hubs 在线聊天室) 在上一篇中,我们只是介绍了简单的消息推送,今天我们来修改一下,实现 ...
- Android之使用个推实现三方应用的推送功能
PS:用了一下个推.感觉实现第三方应用的推送功能还是比较简单的.官方文档写的也非常的明确. 学习内容: 1.使用个推实现第三方应用的推送. 所有的配置我最后会给一个源代码,内部有相关的配置和 ...
随机推荐
- Hibernate面试题(七)--load与get区别
1. load方式是延迟加载,只有属性被访问的时候才会调用sql语句 get方式是非延迟加载,无论后面的代码是否会访问到属性,马上执行sql语句 2. 都通过id=500去获取对象1. get方式会返 ...
- MyBatis+Oracle实现主键自增长的几种常用方式
一.使用selectKey标签 <insert id="addLoginLog" parameterType="map" > <selectK ...
- java.util.ConcurrentModificationException 异常原因和解决方法
不要在 foreach 循环里进行元素的 remove/add 操作.remove 元素请使用 Iterator方式,如果并发操作,需要对 Iterator 对象加锁. 注意: 1.foreach遍历 ...
- mongodb插入性能
转自 https://blog.csdn.net/asdfsadfasdfsa/article/details/60872180 MongoDB与MySQL的插入.查询性能测试 7.1 平均 ...
- Apache+Php+Mysql配置
软件工具:(下载时注意下载相应版本,不同版本安装细节可能会有差异!!) 1>httpd-2.4.18-win64-VC14.zip 下载地址: http://www.apachelounge.c ...
- Mybatis的三种批量操作数据的方法
方法1: 使用for循环在java代码中insert (不推荐) 方法2: 使用 在Mapper.xml当中使用 foreach循环的方式进行insert PersonDao.java文件 publi ...
- SpringBoot之WEB开发-专题二
SpringBoot之WEB开发-专题二 三.Web开发 3.1.静态资源访问 在我们开发Web应用的时候,需要引用大量的js.css.图片等静态资源. 默认配置 Spring Boot默认提供静态资 ...
- 你知道Verilog HDL程序是如何构成的吗
本节通过硬件描述语言Verilog HDL对二十进制编码器的描述,介绍Verilog HDL程序的基本结构及特点. 二十进制编码器及Verilog HDL描述 二十进制编码器是数字电路中常用的电路单元 ...
- Java 使用 JDBC 连接数据库的代码整合[MySql、SqlServer、Oracle]-[经过设计模式改造](2020年寒假小目标01)
日期:2020.01.08 博客期:121 星期三 今天对过去整个大二和大三上半学期用到的数据库的方法进行汇总,可以有效的使用.套用,每一个部分都有<软件设计模式>知识,上述代码满足了开闭 ...
- 【快学springboot】使用springboot发送邮件
前言 在实际项目中,经常需要用到邮件通知功能.比如,用户通过邮件注册,通过邮件找回密码等:又比如通过邮件发送系统情况,通过邮件发送报表信息等等,实际应用场景很多.这篇文章,就教大家通过springbo ...