注意:

服务器需要打开994的端口。不然会超时。

第一步

引入依赖。

<!-- SpringBoot——邮件服务 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

第二步

配置application.yml文件

spring:##邮件服务mail:host: smtphz.qiye.163.comusername: 你的邮箱password: 你的授权码senderName: 你的邮箱default-encoding: utf-8properties:mail:smtp:ssl:enable: trueauth: trueport: 994

第三步

增加配置类。

package com.penghu.config;import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** @author :Mall*/
@Configuration
@Data
public class EmailConfig {@Value("${spring.mail.senderName}")private String senderName;
}

第四步

实现类。

package com.penghu.service.email;import com.penghu.config.EmailConfig;
import com.penghu.dao.email.EmailSendlogMapper;
import com.penghu.entity.email.EmailSendlog;
import com.penghu.utils.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.thymeleaf.context.Context;
import org.thymeleaf.spring5.SpringTemplateEngine;import javax.annotation.Resource;
import javax.mail.internet.MimeMessage;
import java.time.Duration;/*** @author :Mall* @description : 邮件发送服务层实现*/
@Service
public class EmailService {// 日志private final Logger logger = LoggerFactory.getLogger(this.getClass());// Redis对象,主要用于保证幂等性@Autowiredprivate StringRedisTemplate stringRedisTemplate;// Email发送对象@Resourceprivate JavaMailSender javaMailSender;// template模板@Autowiredprivate SpringTemplateEngine templateEngine;// Email邮件配置@Autowiredprivate EmailConfig emailConfig;/*** 发送普通文本内容** @param to       发送给谁* @param title    标题* @param content  内容* @param identity 唯一标识* @return*/public Result<Object> sendText(String to, String title, String content, MultipartFile file, String identity) {// 用redis的setNx操作,保证幂等性Result<Object> result = new Result<Object>();if (stringRedisTemplate.opsForValue().setIfAbsent(identity + "Text", to, Duration.ofMinutes(5))) {EmailSendlog emailSendlog = new EmailSendlog();try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, file != null);//邮件的标题messageHelper.setSubject(title);messageHelper.setFrom(emailConfig.getSenderName());//邮件接收者(可发送多个)String[] toArray = to.split("[,]");messageHelper.setTo(toArray);//邮件的内容,不是HtmlmessageHelper.setText(content, false);//添加附件if (file != null)messageHelper.addAttachment(file.getOriginalFilename(), file);javaMailSender.send(messageHelper.getMimeMessage());logger.info(identity + ":" + to + "发送成功");return result;} catch (Exception e) {logger.info(e.getMessage());result.success("发送失败");return result;} finally {// 发送成功后,删除keystringRedisTemplate.delete(identity + "Text");}} else {result.error("发送中,请稍后");return result;}}/*** 发送Html内容** @param to       发送给谁* @param title    标题* @param content  内容* @param identity 唯一标识* @return*/public Result<Object> sendHtml(String to, String title, String content, MultipartFile file, String identity) {Result<Object> result = new Result<>();// 用redis的setNx操作,保证幂等性if (stringRedisTemplate.opsForValue().setIfAbsent(identity + "Html", to, Duration.ofMinutes(5))) {EmailSendlog emailSendlog = new EmailSendlog();try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, file != null);//邮件的标题messageHelper.setSubject(title);messageHelper.setFrom(emailConfig.getSenderName());//邮件接收者(可发送多个)String[] toArray = to.split("[,]");messageHelper.setTo(toArray);//邮件的内容messageHelper.setText(content, true);//添加附件if (file != null) {messageHelper.addAttachment(file.getOriginalFilename(), file);}javaMailSender.send(messageHelper.getMimeMessage());logger.info(identity + ":" + to + "发送成功");result.success("发送成功");return result;} catch (Exception e) {e.printStackTrace();logger.info(e.getMessage());result.success("发送失败");return result;} finally {// 发送成功后,删除keystringRedisTemplate.delete(identity + "Html");}} else {result.success("发送中,请稍后");return result;}}/*** 发送模板1内容** @param to       发送给谁* @param title    标题* @param content  内容* @param identity 唯一标识* @return*/public Result<Object> sendTemplate1(String to, String title, String content, MultipartFile file, String identity) {Result<Object> result = new Result<>();// 用redis的setNx操作,保证幂等性if (stringRedisTemplate.opsForValue().setIfAbsent(identity + "Html", to, Duration.ofMinutes(5))) {EmailSendlog emailSendlog = new EmailSendlog();try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, file != null);//邮件的标题messageHelper.setSubject(title);messageHelper.setFrom(emailConfig.getSenderName());//邮件接收者(可发送多个)String[] toArray = to.split("[,]");messageHelper.setTo(toArray);//邮件的内容,利用 Thymeleaf 模板构建 html 文本Context ctx = new Context();ctx.setVariable("title", title);ctx.setVariable("content", content);String emailText = templateEngine.process("template1", ctx);//发送内容messageHelper.setText(emailText, true);//添加附件if (file != null) {messageHelper.addAttachment(file.getOriginalFilename(), file);}javaMailSender.send(messageHelper.getMimeMessage());logger.info(identity + ":" + to + "发送成功");result.success("发送成功");return result;} catch (Exception e) {logger.info(e.getMessage());result.success("发送失败");return result;} finally {// 发送成功后,删除keystringRedisTemplate.delete(identity + "Html");}} else {result.success("发送中,请稍后");return result;}}
}

SpringBoot集成网易企业邮箱,亲测可用相关推荐

  1. spring boot 完整集成jsp。(亲测可用)

    1.idea在工程源文件夹src/main/下创建web资源文件夹,webapp,并设置为资源文件. 2.application.properties文件设置如下   #jsp 支持 spring.m ...

  2. Idea工具开发 SpringBoot整合JSP(毕设亲测可用)

    因为,临近毕业了,自己虽然也学了很多框架.但是,都是在别人搭建好的基础上进行项目开发.但是springboot的官方文档上明确指出不提倡使用jsp进行前端开发,但是在校期间只学了jsp作为前端页面.所 ...

  3. 阿里云 部署SpringBoot和Vue项目 亲测可用(第一次部署经验贴)

    阿里云 部署SpringBoot和Vue项目 亲测可用!第一次部署经验贴! 前言:与伙伴一起写了一个项目,但是由于老师要我们部署到服务器上,而我从未有部署过,查看了csdn很多博客,试了好多篇,才成功 ...

  4. springboot心跳检测_springboot websocket 实时刷新 添加心跳机制(亲测可用版)

    思路 在我之前的一篇文章当中写到了websocket的实时刷新,但是有个问题没有解决,就是长时间没有数据的时候,这个连接就会自动断开,然后再次进行连接的话,需要再次进行连接.如果加入心跳机制的话,10 ...

  5. springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。

    前言 spring boot 2.0.0.RELEASE spring 5.0.4.RELEASE 网易企业邮箱 2019年版 jdk 1.8 发邮件的说明 按照加密方式方式,可以分为: 明文 TLS ...

  6. 不需要邮箱 修改Gitlab账号密码(亲测可用)

    突然忘记了gitlab的登陆用户密码,还在内网! 不要着急, 通过后台修改密码! 1. 进入gitlab 后台控制台,等到打开ruby控制界面,有点慢不要着急,也可去掉 sudo登入,但可能会失败(笔 ...

  7. 网易企业邮箱在 手机上登陆 总显示密码或账号错误

    账户密码明明没输错,就是登陆不上去,可以尝试以下方法. 首先在电脑上登陆 网易企业邮箱进去 然后在手机登录的时候,账号还是你的邮箱账号,密码就用 刚刚生成的授权密码即可登录. 亲测可行.

  8. XMind 8 Update 8 Pro 激活教程(亲测可用) 国外官网下载 破解教程(带离线安装包)

    Jun 21, 2019 | 资源 - 破解软件(稀缺)资源 - 破解软件(常用) |  1.2k 字 |  4 分钟 文章目录 1. 本博文的简述or解决问题? 2. 下载安装包: 3. 说明: 4 ...

  9. 基于网易企业邮箱的JavaMail配置

    添加maven依赖(基于springboot) <dependency><groupId>org.springframework.boot</groupId>< ...

最新文章

  1. PHP中 的全局变量$_SERVER
  2. 学生课程表管理系统——stage 1
  3. java的自动装箱和拆箱,Java中的自动装箱和拆箱是什么?
  4. [IE]微软发布IE9预览版- 建议Web开发者开始研究SVG
  5. sql server compact
  6. windows server 2008 开机进度条闪过后重启_Windows无法启动:先用PE把桌面重要数据拷出来再说其他...
  7. 如何修改移动设备按钮默认样式
  8. web全栈架构师所需技术栈_统一架构–一种构建全栈应用程序的简单方法
  9. IE的hasLayout
  10. python将列表写入文件_Python将列表数据写入文件(txt, csv,excel)
  11. 【code vs】 2780 ZZWYYQWZHZ
  12. 《数字电子技术基础》3.3 CMOS门电路(上)
  13. c语言简单的对话机器人软件,示例:聊天机器人
  14. 使用Tor以加密方式发送BCH
  15. 瑞克和莫蒂 第三季6集
  16. 文本串加密和解密程序。一个文本串可用事先给定的字母映射表进行加密
  17. python爬虫—Requests
  18. 设置服务器防火墙对应的出入站规则
  19. 2022年必须知道的数字化转型!
  20. BAT实现服务器文件同步

热门文章

  1. 【网络安全】渗透工程师面试题总结大全
  2. Gulp教程(3)-与远程版本库协作
  3. ESD镜像文件转换成ISO镜像文件解决方案
  4. SLAM大牛Cyrill 开源SuMa ++:基于语义激光雷达过滤动态物体提高定位精度
  5. rj45 千兆接口定义_网线的RJ45接口的针脚定义
  6. zip4j对处理压缩包及压缩包加密处理
  7. R语言计算相关系数时出现NA的解决办法
  8. centos7 apache 虚拟目录 You don't have permission to access / on this server 解决方法
  9. mysql 字段增加备注_怎么在mysql数据库中添加备注信息
  10. 情人节买什么礼物比较好呢?最实用的情人节礼物分享