注意:

服务器需要打开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. 基于深度神经网络的风电场超短期功率预测系统【数据故事计划最佳学术奖】...
  2. 转载-ubuntu搭建Git 服务器
  3. java 迪杰斯特拉_Java 实现Dikstra迪杰斯特拉算法 关于单源顶点最短路径问题的求解...
  4. 铁血规则:事件预订与取消预订
  5. 媒体转码切片_cVideo云转码系统
  6. 飞狐的日线 java_JAVA 版 ATX-Client
  7. Bash学习系列---第2/3部分
  8. 报表开发导出各种格式文件的API
  9. 《统计学》第八版贾俊平第一章课后习题及答案总结
  10. 权限系统设计学习总结(1)——多租户的RBAC权限管理
  11. 超微服务器只显示raid0,超微主板怎么创建RAID磁盘阵列 服务器组建RAID0、RAID1图文教程...
  12. 计算机视觉中头部姿态估计的研究综述--Head Pose Estimation in Computer Vision - A Survey
  13. Latex参考文献问题---参考文献条数不显示
  14. MySQL之初识MySQL
  15. 解决sudo rosdep init 报错的问题
  16. IC验证-SDHOST项目1
  17. live.cn邮箱注册帐号方法
  18. 【华为校园优招】华为苏研2日面试之旅
  19. html5css字体下划线,如何利用css样式做出文字的下划线?
  20. mysql 联表 update

热门文章

  1. opencv图像转换与保存
  2. 购买的wemall6.0源码商城系统分享,百度云盘易失效,速取
  3. 什么软件可以用蓝牙测试信号,litepoint IQview蓝牙测试仪/无线wifi网络信号测试仪...
  4. k8s(一):基础核心概念
  5. Python开发-- Lesson 1--Python介绍和入门(2016/07/23)
  6. ubuntu中查找文件后高亮_vim的高亮查找操作
  7. 用硅光电池测量白炽灯频闪
  8. 【MQ笔记】聊一聊空间(线性空间、赋范空间、度量空间、内积空间、欧氏空间、酉空间)
  9. 使用 Laravel Sail 和 Laravel Octane 开发高性能 PHP 项目
  10. Android框架排行榜