前言

在许多企业级项目中,需要用到邮件发送的功能,如:

  1. 注册用户时需要邮箱发送验证
  2. 用户生日时发送邮件通知祝贺
  3. 发送邮件给用户等

    创建工程导入依赖
<!-- 邮箱发送依赖 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- 小火龙代码简化 -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version>
</dependency>

本工程依赖于SpringBoot,是基于SpringBoot再次对邮箱发送进行了一次封装。

创建Application.properties
# JavaMailSender 邮件发送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=lovelyWu98k@qq.com
#授权码
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8
封装邮箱发送工具类

创建邮箱信息实体类,如下:

/*** 邮件信息实体** @author:伍梓涛* @version:1.0.0* @Modified By:SimpleWu* @CopyRright (c)2019-:YUM架构平台*/
@Data
public class MailEntity {private String to; //收件人private String subject;//标题private String text;//正文private boolean isHtml = false;//是否html邮件private List<String> files;//附件地址private Date sentDate;//发送时间}

创建邮箱信息实体类工具,快捷创建邮件信息

/*** 邮箱发送信息统一处理封装** @author:伍梓涛* @version:1.0.0* @Modified By:SimpleWu* @CopyRright (c)2019-:YUM架构平台*/
@Slf4j
public class MailEntityHelper {public static MimeMessageHelper craeteMessageHelper(MimeMessage mimeMessage, MailEntity mailBean) throws MessagingException {MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);// mimeMessageHelper.setFrom(emailSender);//发件人mimeMessageHelper.setTo(mailBean.getTo());//收件人mimeMessageHelper.setSubject(mailBean.getSubject());//标题mimeMessageHelper.setText(mailBean.getText(), mailBean.isHtml());//是否htmlmimeMessageHelper.setSentDate(mailBean.getSentDate() == null ? new Date() : mailBean.getSentDate());// 客户端邮箱发送时间if (mailBean.getFiles() != null && mailBean.getFiles().size() > 0) {//附件添加mailBean.getFiles().forEach(filename -> {String ext = filename.substring(filename.lastIndexOf(".") + 1, filename.length());File diskfile = new File(filename);try {mimeMessageHelper.addAttachment(diskfile.getName(), diskfile);} catch (MessagingException e) {e.printStackTrace();log.error("设置附件失败:{}", mailBean);}});}return mimeMessageHelper;}}

创建邮箱发送工具类,进行邮箱发送:


/*** 邮箱发送工具类** @author:伍梓涛* @version:1.0.0* @Modified By:SimpleWu* @CopyRright (c)2019-:YUM架构平台*/
@Component
@Slf4j
public class MailHelper {@Autowiredprivate JavaMailSender javaMailSender;@Value("${spring.mail.username}")private String emailSender;private static MailHelper mailHelper;public MailHelper() {mailHelper = this;}/*** 构建静态获取实例** @return*/public static MailHelper buidler() {if (mailHelper == null) {return null;}return mailHelper;}/*public void sendSimpleMail(EmailContextPojo mailBean) {try {SimpleMailMessage simpleMailMessage = new SimpleMailMessage();//邮件发送人simpleMailMessage.setFrom(emailSender);//邮件接收人simpleMailMessage.setTo(mailBean.getTo());//邮件主题simpleMailMessage.setSubject(mailBean.getSubject());//邮件内容simpleMailMessage.setText(mailBean.getText());javaMailSender.send(simpleMailMessage);} catch (Exception e) {e.printStackTrace();log.error("邮件发送失败", e.getMessage());}}*/public void sendMail(MailEntity mailBean) {MimeMessage mimeMailMessage = null;try {mimeMailMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = MailEntityHelper.craeteMessageHelper(mimeMailMessage, mailBean);mimeMessageHelper.setFrom(emailSender);//发件人javaMailSender.send(mimeMailMessage);} catch (Exception e) {log.error("邮件发送失败", e.getMessage());}}public void sendMail(MailEntity... mailBeans) {//批量发送集合List<MimeMessage> mimeMessages = new ArrayList<>(mailBeans.length);try {if (mailBeans != null || mailBeans.length > 0) {for (int i = 0; i < mailBeans.length; i++) {MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();MimeMessageHelper messageHelper = MailEntityHelper.craeteMessageHelper(mimeMailMessage, mailBeans[i]);messageHelper.setFrom(emailSender);//发件人mimeMessages.add(mimeMailMessage);}}MimeMessage[] resultMessage = new MimeMessage[mimeMessages.size()];mimeMessages.toArray(resultMessage);javaMailSender.send((resultMessage));} catch (Exception e) {log.error("邮件发送失败", e.getMessage());}}}

在之前通过邮箱发送信息统一处理的工具类,对邮件信息实体进行封装后,这里就只需要传入对象参数即可。由于在这里使用的是SpringBoot已经封装好的,由于我们要把它当成工具类使用,每次需要注入并不方便。
所在在类中加了个静态对象,在Spring 容器实例化的时候给他初始化直接赋值给javaMailSender并且通过buidler()可以静态获取到实例对象,但是这样如果被重新创建对象后就会产生问题,所以最好在工具类中使用Spring 容器去获取 javaMailSender即可 。

发送邮件

1.发送普通邮件

 MailEntity emailContextPojo = new MailEntity();emailContextPojo.setSubject("Ycloud 邮箱标题");emailContextPojo.setText("Ycloud 邮箱正文");emailContextPojo.setTo(" 接收邮箱号 ");MailHelper.buidler().sendMail(emailContextPojo);

2.发送Html邮件

 emailContextPojo.setHtml(true);

只需要将信息实体类设置成true即可。
3.发送附件

emailContextPojo.setFiles(Arrays.asList("D:\\Yum系统架构平台\\004.高系统部署\\004.PXC\\部署手册.docx"));

只需要增加附件路径即可。
注: 请勿直接在项目中使用邮箱发送
可参考JOB实现定时发送邮件:https://www.cnblogs.com/SimpleWu/p/11341453.html
本文代码案例:https://github.com/450255266/open-doubi/tree/master/SpringBoot/email

转载于:https://www.cnblogs.com/SimpleWu/p/11401948.html

SpringBoot中快速实现邮箱发送相关推荐

  1. SpringBoot中整合Mail实现发送模板邮件

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/35688 实现最简单的带标题以及文本内容的邮件发送: https:/ ...

  2. SpringBoot中整合Mail实现发送带附件的邮件

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/35688 实现最简单的带标题以及文本内容的邮件发送: https:/ ...

  3. Unity中使用QQ邮箱发送验证码

    1.打开邮箱设置开启POP3/SMTP服务 2.生成授权码 3.发送验证码按钮事件 public void SendVerificationCode() {// 随机生成验证码Verification ...

  4. SpringBoot中使用qq邮箱发送邮件

    pom.xml文件添加依赖 <!--邮箱验证--><dependency><groupId>org.springframework.boot</groupId ...

  5. springboot实现邮箱发送

    下面是由springboot整合mial,实现邮箱发送,可以发送文本及附件等. 依赖: <dependency><groupId>org.springframework.boo ...

  6. 玩转 SpringBoot 2 快速整合 | JSP 篇

    前言 JavaServer Pages(JSP)技术使Web开发人员和设计人员能够快速开发和轻松维护利用现有业务系统的信息丰富的动态Web页面.作为Java技术系列的一部分,JSP技术可以快速开发独立 ...

  7. SpringBoot实现QQ邮箱发送功能

    SpringBoot实现QQ邮箱发送功能 一. 前言 1.互联网发展到现在,相必大家都知道发送邮件应该是网站的必备功能之一:用户注册发送邮箱验证.忘记密码.监控提醒以及发送营销信息等. Spring提 ...

  8. Spring-Boot整合微信登陆、微信支付、邮箱发送、支付宝支付和阿里云短信

    Spring-Boot整合 1. 发送邮件 2. 支付宝支付 3. 阿里云短信 4. 微信登陆 5. 微信支付 6. Swargger2 前后端API接口信息文档 7. ehcache缓存缓存 8. ...

  9. SpringBoot实现邮箱发送验证码(QQ,163等同理)

    SpringBoot实现邮箱发送验证码 准备工作(依赖和yml文件的配置) 邮件的发送代码 补充 准备工作(依赖和yml文件的配置) 我们要远程操纵邮箱就需要获得每个邮箱的密钥: 1.先进入你的qq邮 ...

最新文章

  1. CUDA Samples: matrix multiplication(C = A * B)
  2. Ubuntu上五款搜索工具:Albert、Synapse、Utools、Ulauncher、FSearch
  3. Java 三位数的变形
  4. 一个好用的便利设置浏览器代理的Chrome扩展应用
  5. Android中SlidingDrawer介绍【安卓进化三十四】
  6. 【转】VC 多线程中控制界面控件的几种方法
  7. 如何进行可视化大屏视觉设计?
  8. 【图像处理】H.264开源解码器评测
  9. 浅谈IPFS新激励层Filenet究竟是什么,令牌、公链、应用?超级云系统!
  10. 如何成为一个合格的JAVA初级程序员
  11. 计算机控制器cu的功能是,控制器cu的功能是
  12. 漏洞分析---SSLv3降级加密协议Padding Oracle攻击(POODLE)技术分析
  13. uni-app个人中心页开发
  14. excel中的stdev和stdevp的区别等系列
  15. 蓝桥杯练习 小明上楼梯(递归设计)
  16. 反射、装箱拆箱、ArrayList与Array的区别 - 天生舞男 - 博客园
  17. linux系统查看电脑cpu,linux系统怎么查看自己电脑的cpu位数
  18. linux 保存文件名乱码怎么办,Linux 文件名编码转换 乱码 解决办法
  19. USGS上下载的Landsat数据ENVI无法正常打开解决方法
  20. 雨伞消费行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. 使用函数求余弦函数的近似值_WPS-Excel表格实用技巧-排名函数RANK函数的使用
  2. windows的盘共享挂载到linux下,通过Windows共享文件夹直接挂载到Linux中使用(实验操作)...
  3. Windows系统(cmd)常用命令
  4. SQLi LABS Less-20
  5. 数据结构:栈的了解与示例(逆波兰表达式)
  6. 解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示The operation could not be completed. 的问题。...
  7. 20165211 我期望的师生关系
  8. 数据库设计的范式规范
  9. python自动压图贴图到Excel小工具
  10. cron计划任务、权限和归属 、 使用LDAP认证 、 家目录漫游