SpringBoot集成网易企业邮箱,亲测可用
注意:
服务器需要打开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集成网易企业邮箱,亲测可用相关推荐
- spring boot 完整集成jsp。(亲测可用)
1.idea在工程源文件夹src/main/下创建web资源文件夹,webapp,并设置为资源文件. 2.application.properties文件设置如下 #jsp 支持 spring.m ...
- Idea工具开发 SpringBoot整合JSP(毕设亲测可用)
因为,临近毕业了,自己虽然也学了很多框架.但是,都是在别人搭建好的基础上进行项目开发.但是springboot的官方文档上明确指出不提倡使用jsp进行前端开发,但是在校期间只学了jsp作为前端页面.所 ...
- 阿里云 部署SpringBoot和Vue项目 亲测可用(第一次部署经验贴)
阿里云 部署SpringBoot和Vue项目 亲测可用!第一次部署经验贴! 前言:与伙伴一起写了一个项目,但是由于老师要我们部署到服务器上,而我从未有部署过,查看了csdn很多博客,试了好多篇,才成功 ...
- springboot心跳检测_springboot websocket 实时刷新 添加心跳机制(亲测可用版)
思路 在我之前的一篇文章当中写到了websocket的实时刷新,但是有个问题没有解决,就是长时间没有数据的时候,这个连接就会自动断开,然后再次进行连接的话,需要再次进行连接.如果加入心跳机制的话,10 ...
- springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
前言 spring boot 2.0.0.RELEASE spring 5.0.4.RELEASE 网易企业邮箱 2019年版 jdk 1.8 发邮件的说明 按照加密方式方式,可以分为: 明文 TLS ...
- 不需要邮箱 修改Gitlab账号密码(亲测可用)
突然忘记了gitlab的登陆用户密码,还在内网! 不要着急, 通过后台修改密码! 1. 进入gitlab 后台控制台,等到打开ruby控制界面,有点慢不要着急,也可去掉 sudo登入,但可能会失败(笔 ...
- 网易企业邮箱在 手机上登陆 总显示密码或账号错误
账户密码明明没输错,就是登陆不上去,可以尝试以下方法. 首先在电脑上登陆 网易企业邮箱进去 然后在手机登录的时候,账号还是你的邮箱账号,密码就用 刚刚生成的授权密码即可登录. 亲测可行.
- XMind 8 Update 8 Pro 激活教程(亲测可用) 国外官网下载 破解教程(带离线安装包)
Jun 21, 2019 | 资源 - 破解软件(稀缺)资源 - 破解软件(常用) | 1.2k 字 | 4 分钟 文章目录 1. 本博文的简述or解决问题? 2. 下载安装包: 3. 说明: 4 ...
- 基于网易企业邮箱的JavaMail配置
添加maven依赖(基于springboot) <dependency><groupId>org.springframework.boot</groupId>< ...
最新文章
- 基于深度神经网络的风电场超短期功率预测系统【数据故事计划最佳学术奖】...
- 转载-ubuntu搭建Git 服务器
- java 迪杰斯特拉_Java 实现Dikstra迪杰斯特拉算法 关于单源顶点最短路径问题的求解...
- 铁血规则:事件预订与取消预订
- 媒体转码切片_cVideo云转码系统
- 飞狐的日线 java_JAVA 版 ATX-Client
- Bash学习系列---第2/3部分
- 报表开发导出各种格式文件的API
- 《统计学》第八版贾俊平第一章课后习题及答案总结
- 权限系统设计学习总结(1)——多租户的RBAC权限管理
- 超微服务器只显示raid0,超微主板怎么创建RAID磁盘阵列 服务器组建RAID0、RAID1图文教程...
- 计算机视觉中头部姿态估计的研究综述--Head Pose Estimation in Computer Vision - A Survey
- Latex参考文献问题---参考文献条数不显示
- MySQL之初识MySQL
- 解决sudo rosdep init 报错的问题
- IC验证-SDHOST项目1
- live.cn邮箱注册帐号方法
- 【华为校园优招】华为苏研2日面试之旅
- html5css字体下划线,如何利用css样式做出文字的下划线?
- mysql 联表 update
热门文章
- opencv图像转换与保存
- 购买的wemall6.0源码商城系统分享,百度云盘易失效,速取
- 什么软件可以用蓝牙测试信号,litepoint IQview蓝牙测试仪/无线wifi网络信号测试仪...
- k8s(一):基础核心概念
- Python开发-- Lesson 1--Python介绍和入门(2016/07/23)
- ubuntu中查找文件后高亮_vim的高亮查找操作
- 用硅光电池测量白炽灯频闪
- 【MQ笔记】聊一聊空间(线性空间、赋范空间、度量空间、内积空间、欧氏空间、酉空间)
- 使用 Laravel Sail 和 Laravel Octane 开发高性能 PHP 项目
- Android框架排行榜