在现有项目中有使用到邮件服务,所有在空闲之余,将邮件模块独立出来。
需要pom对邮件的jar依赖。

<!-- 邮件发送 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

邮件的发送发配置,这一块的配置根据实际情况可独立写到一个单独的配置文件上mail.yml,后期方便维护配置

spring:mail:host: 你的邮件服务username: 发送方的邮箱password: 邮箱的授权密码port: 465 # 这个端口根据实际情况配置,一般都是465protocol: smtp # 这里应该是不用改的,我没试过其他的配置test-connection: falsedefault-encoding: UTF-8properties:mail:debug: truesmtp:auth: trueconnectiontimeout: 10000timeout: 10000writetimeout: 10000socketFactory:class: javax.net.ssl.SSLSocketFactoryport: 465starttls:enable: truerequired: true

邮件发送的逻辑代码

/*** 邮件发送* @author tanzhiming* @version */
@Slf4j
@Service("sendMailService")
public class SendMailServiceImpl implements SendMailService {@Resourceprivate JavaMailSender    mailSender;@Value("${spring.mail.username}")private String            from;@Async@Overridepublic void sendMail(Send2EmailDTO send2EmailDTO) {log.info("开始向邮箱【{}】发送邮件", send2EmailDTO.getTo());Date date = new Date();MimeMessage mimeMessage = mailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = null;List<String> delPaths = new ArrayList<>();try {mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);String nick = "";try {// 使用邮箱别名nick = javax.mail.internet.MimeUtility.encodeText(MailsmsBusiApiConstant.EMAIL_NICK_NAME);} catch (UnsupportedEncodingException e) {e.printStackTrace();}mimeMessageHelper.setFrom(new InternetAddress(nick + "<" + from + ">"));mimeMessageHelper.setTo(send2EmailDTO.getTo());mimeMessageHelper.setSubject(send2EmailDTO.getSubject());mimeMessageHelper.setText(send2EmailDTO.getText(), true);List<EmailAnnex> emailAnnexList = new ArrayList<>();for (String filePath : send2EmailDTO.getOssFilePath()) {String fileName = UUID.randomUUID().toString().replace("-", "");String pathname = tempFilePath + fileName;// 下载文件至本都服务路径FileUtils.downloadFromUrl(filePath, pathname); // 请参考 (https://blog.csdn.net/tanzhming/article/details/103803952)// 邮件附件File file = new File(pathname);FileSystemResource fileSystemResource = new FileSystemResource(file);mimeMessageHelper.addAttachment(file.getName(), fileSystemResource);delPaths.add(pathname);}// 发送邮件mailSender.send(mimeMessage);delPaths.forEach(s -> {// 删除文件FileUtils.del(s);});} catch (SMTPAddressFailedException e) {log.error("邮件发送失败,邮箱地址错误,检查邮箱输入是否有误 ex={}", e.getMessage(), e);} catch (MessagingException e) {log.error("邮件发送失败 ex={}", e.getMessage(), e);}log.info("邮件发送成功");}
}

Send2EmailDTO .java

import lombok.Data;
import lombok.EqualsAndHashCode;import javax.validation.constraints.NotNull;
import java.util.Map;/*** @desc 发送邮件* @com * @Author tanzhiming(Jruoning) 2019/11/12 15:29*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Send2EmailDTO {/** 邮件主题 */@NotNull(message = "邮件主题不能为空")private String subject;/** 接收邮箱 */@NotNull(message = "收件邮箱不能为空")private String to;/** 收件人名称 */private String toName;/** oss的文件访问路径(邮件附件) */private String[] ossFilePath;/** 邮件正文 */private String text;/** 操作用户id */@NotNull(message = "操作用户id不能为空")private String currentUserId;/** 操作用户名称 */@NotNull(message = "操作用户名称不能为空")private String currentUserName;
}

实际项目中,在发送邮件的过程中会记录邮件发送记录及邮件附件等信息,这里呢我就没有把代码贴出来了,根据需要,自行添加。

springCloud实现邮件发送相关推荐

  1. SpringBoot | 第二十六章:邮件发送

    2019独角兽企业重金招聘Python工程师标准>>> 前言 讲解了日志相关的知识点后.今天来点相对简单的,一般上,我们在开发一些注册功能.发送验证码或者订单服务时,都会通过短信或者 ...

  2. 邮件发送类,支持HTML格式,支持优先级设置

    www.chinacs.net  2002-5-9  中文C#技术站 邮件发送类,支持HTML格式,支持优先级设置.通过SOCKET类实现的 using System; using System.Te ...

  3. 使用Spring实现邮件发送

    2019独角兽企业重金招聘Python工程师标准>>> 这两天写个小程序需要使用邮件发送的功能,在网上搜索了一帮子文章,感觉还是使用Spring的邮件发送功能比较方便,哈哈,懒人就这 ...

  4. python邮件发送哪个好_最全总结!聊聊 Python 发送邮件的几种方式

    1. 前言 邮件,作为最正式规范的沟通方式,在日常办公过程中经常被用到 我们都知道 Python内置了对 SMTP 的支持,可以发送纯文本.富文本.HTML 等格式的邮件 本文将聊聊利用 Python ...

  5. CentOS搭建msmtp+mutt实现邮件发送

    1:搭建配置msmtp 下载msmtp包: 官方地址:http://msmtp.sourceforge.net/download.html 编译,安装(官方下载的包为tar.xz格式): #xz -d ...

  6. 利用phpmailer类邮件发送

    <?phprequire("class.phpmailer.php"); //下载的文件必须放在该文件所在目录$mail = new PHPMailer(); //建立邮件发 ...

  7. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...

    本文实例讲述了Python实现的查询mysql数据库并通过邮件发送信息功能.分享给大家供大家参考,具体如下: 这里使用Python查询mysql数据库,并通过邮件发送宕机信息. Python代码如下: ...

  8. JavaMail邮件发送不成功的那些坑人情况及分析说明

    前言   JavaMail的使用本身并不难,网上有不少案例,简单易懂,而且有详细的中文注解.但是由于JavaMail的机制设置不够完善,特别是异常出错时的参考信息太少,给初学者造成了不少麻烦,而我就是 ...

  9. 邮件发送 --- 纯Java、JavaWeb、Spring三种实现方式

    邮件发送学习笔记~ 一.邮件发送介绍 要在网络上实现邮件功能,必须要有专门的邮件服务器! 这些邮件服务器类似于现实生活中的邮局,它主要负责接收用户投递过来的邮件,并把邮件投递到邮件接收者的电子邮箱中! ...

最新文章

  1. MySQL8索引篇:性能提升了100%!!
  2. 给服务器装系统U盘要处理吗,服务器装系统从u盘装
  3. MySQL 如何利用做排序
  4. mysql创建用户报错ERROR 1290
  5. 我擦!没想到你们都是这样 “劝退” 员工的!
  6. 禁用计算机组策略和管理,计算机正在使用时,禁用或关闭组策略刷新 | MOS86
  7. 数字签名开源_开源如何推动数字艺术时代
  8. @codeforces - 786E@ ALT
  9. [转载] 【Python】Python3 List copy()方法
  10. 【三支火把】--- 关于UEFIPCD的总结介绍
  11. error create beanException
  12. 关于oracle的笔记
  13. Shiro实现登录功能
  14. 地图编辑器开发(四)
  15. Debian+Apache2+MySQL5+PHP5+GD
  16. STM32内部参考电压的使用
  17. linux系统CPU隔离isolcpu参数设置
  18. mc服务器不显示皮肤,游戏中不显示皮肤的可能原因
  19. OpenStack新版UI管理skyline
  20. 【ROS】—— ROS快速上手(一)

热门文章

  1. M1安装homebrew以及错误解决办法
  2. 算法学习:738.单调递增的数字
  3. HTML网页表单学习(全方面详解)
  4. 谷歌分析iOS开发包实战
  5. python 爬虫视频网站
  6. 线程实现日期倒计时和计时
  7. 「GoCN酷Go推荐」Golang轻量级桌面程序wails2教学
  8. go html桌面,go语言使用go-sciter创建桌面应用(一) 简单的通过html,css写ui
  9. linux网卡rx,Linux网卡驱动分析之RTL8139(四)
  10. Qt关于设置子窗口样式表不生效问题