添加依赖

<!--   邮件服务   -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>

发送者邮箱配置-139邮箱


刷新页面后会出现生成授权码的提示

添加配置-139邮箱

## application.yml
server:port: 9657
spring:profiles:active: 139
## application-139.yml
spring:mail:# 配置 SMTP 服务器地址host: smtp.139.com# 发送者邮箱username: 15178292346@139.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: ****# 端口号465或者25port: 465# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:mail:smtp:ssl:# 这里设为true时 端口号设为 465 设为false时 端口号设为25enable: truesocketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true

编写工具类

普通邮件

@Component
public class EmailUtil {@AutowiredJavaMailSender javaMailSender;@Value("${spring.mail.username}")private String sendEmail;/*** 普通邮件发送*/public void sendSimpleMail() {// 构建一个邮件对象SimpleMailMessage message = new SimpleMailMessage();// 设置邮件主题message.setSubject("这是一封测试邮件");// 设置邮件发送者,这个跟application.yml中设置的要一致message.setFrom(sendEmail);// 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似// message.setTo("*****","****");message.setTo("*****@163.com");// 设置邮件抄送人,可以有多个抄送人message.setCc("898365387@qq.com");// 设置隐秘抄送人,可以有多个message.setBcc("*****@qq.com");// 设置邮件发送日期message.setSentDate(new Date());// 设置邮件的正文message.setText("这是测试邮件的正文");// 发送邮件javaMailSender.send(message);}
}

添加附件

    /*** 发送带附件的邮件*/public void sendAttachFileMail() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();// true表示构建一个可以带附件的邮件对象MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);helper.setSubject("这是一封测试邮件");helper.setFrom(sendEmail);helper.setTo("mail_fanguangrui@163.com");helper.setSentDate(new Date());helper.setText("这是测试邮件的正文");// 第一个参数是自定义的名称,后缀需要加上,第二个参数是文件的位置helper.addAttachment("bg1.png",new File("E:\\springboot\\springboot-plus\\learn-email\\src\\main\\resources\\file\\bg1.png"));javaMailSender.send(mimeMessage);} catch (Exception e){e.printStackTrace();}}

添加图片

    /*** 正文中带图片的邮件*/public void sendImgResMail() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setSubject("这是一封测试邮件");helper.setFrom(sendEmail);helper.setTo("898365387@qq.com");helper.setSentDate(new Date());// src='cid:p01' 占位符写法 ,第二个参数true表示这是一个html文本helper.setText("<p>hello 大家好,这是一封测试邮件,这封邮件包含两种图片,分别如下</p><p>第一张图片:</p><img src='cid:p01'/><p>第二张图片:</p><img src='cid:p02'/>",true);// 第一个参数指的是html中占位符的名字,第二个参数就是文件的位置helper.addInline("p01",new FileSystemResource(new File("E:\\springboot\\springboot-plus\\learn-email\\src\\main\\resources\\file\\bg1.png")));helper.addInline("p02",new FileSystemResource(new File("E:\\springboot\\springboot-plus\\learn-email\\src\\main\\resources\\file\\bg2.png")));javaMailSender.send(mimeMessage);} catch (Exception e){e.printStackTrace();}}

使用thymeleaf模板

添加依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>

添加模板 最好放在resources/templates文件夹下

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><base target="_blank" /><style type="text/css">::-webkit-scrollbar{ display: none; }</style><style id="cloudAttachStyle" type="text/css">#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}</style><style id="blockquoteStyle" type="text/css">blockquote{display:none;}</style><style type="text/css">body{font-size:14px;font-family:arial,verdana,sans-serif;line-height:1.666;padding:0;margin:0;overflow:auto;white-space:normal;word-wrap:break-word;min-height:100px}td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}pre {white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;width:95%}th,td{font-family:arial,verdana,sans-serif;line-height:1.666}img{ border:0}header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}blockquote{margin-right:0px}</style>
</head>
<body tabindex="0" role="listitem">
<table width="700" border="0" align="center" cellspacing="0" style="width:700px;"><tbody><tr><td><div style="width:700px;margin:0 auto;border-bottom:1px solid #ccc;margin-bottom:30px;"><table border="0" cellpadding="0" cellspacing="0" width="700" height="39" style="font:12px Tahoma, Arial, 宋体;"><tbody><tr><td width="210"></td></tr></tbody></table></div><div style="width:680px;padding:0 10px;margin:0 auto;"><div style="line-height:1.5;font-size:14px;margin-bottom:25px;color:#4d4d4d;"><strong style="display:block;margin-bottom:15px;">尊敬的用户:<span style="color:#f60;font-size: 16px;"></span>您好!</strong><strong style="display:block;margin-bottom:15px;">您正在进行<span style="color: red">注册\登录</span>操作,请在验证码输入框中输入:<span style="color:#f60;font-size: 24px" th:text="${code}"></span>,以完成操作。</strong></div><div style="margin-bottom:30px;"><small style="display:block;margin-bottom:20px;font-size:12px;"><p style="color:#747474;">注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全<br>(工作人员不会向你索取此验证码,请勿泄漏!)</p></small></div></div><div style="width:700px;margin:0 auto;"><div style="padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;"><p>此为系统邮件,请勿回复<br>请保管好您的邮箱,避免账号被他人盗用</p><p>FGRAPP</p></div></div></td></tr></tbody>
</table>
</body>
</html>

发送邮件方法

    public boolean sendThymeleafMail() {try {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);mimeMessage.setSubject("【FGRAPP】注册登录验证码");helper.setFrom(sendEmail);helper.setTo("898365387@qq.com");helper.setSentDate(new Date());// 这里引入的是Template的ContextContext context = new Context();// 设置模板中的变量context.setVariable("code", "123456");// 第一个参数为模板的名称String process = templateEngine.process("register.html", context);// 第二个参数true表示这是一个html文本helper.setText(process,true);javaMailSender.send(mimeMessage);return true;}  catch (Exception e){e.printStackTrace();return false;}}

测试代码

@SpringBootTest
@RunWith(SpringRunner.class)
@WebAppConfiguration
public class EmailUtilTest {@Autowiredprivate EmailUtil emailUtil;@Testpublic void testSendSimpleMail(){emailUtil.sendSimpleMail();}@Testpublic void sendThymeleafMail(){emailUtil.sendThymeleafMail();}@Testpublic void sendImgResMail(){emailUtil.sendImgResMail();}@Testpublic void sendAttachFileMail(){emailUtil.sendAttachFileMail();}
}

网易邮箱配置

spring:mail:# 配置 SMTP 服务器地址host: smtp.163.com# 发送者邮箱username: mail_fanguangrui@163.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: ***# 端口号465或者994port: 465# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:mail:smtp:ssl:# 这里设为true时 端口号设为 465 设为false时 端口号设为994enable: truesocketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true

QQ邮箱配置

spring:mail:# 配置 SMTP 服务器地址host: smtp.qq.com# 发送者邮箱username: 898365387@qq.com# 配置密码,注意不是真正的密码,而是刚刚申请到的授权码password: ***# 端口号465或者587port: 465# 默认的邮件编码为UTF-8default-encoding: UTF-8# 配置SSL 加密工厂properties:mail:smtp:ssl:# 这里设为true时 端口号设为 465 设为false时 端口号设为587enable: truesocketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true

总结

各个邮箱的配置区别就在于服务器地址以及不使用ssl时的端口号:

服务商 服务器地址 端口号(不使用ssl)
139邮箱 smtp.139.com 25
网易邮箱 smtp.163.com 994
QQ邮箱 smtp.qq.com 587

在使用ssl的情况下端口号都是465

项目源码

GitHub地址

SpringBoot发送邮件(网易邮箱,QQ邮箱,139邮箱)相关推荐

  1. springboot 发送邮件问题(阿里云企业邮箱)

    1.No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 解决办法:找到jdk/jre/l ...

  2. 139邮箱短信报警实现

    一.问题的提出 如何在最短的时间,让非在线运维人员得到服务器运行情况?如何在服务器宕机后,在第一时间能通知非在线运维人员 ? 二.问题的初步解决 移动办公(移动终端运维支持)很重要,通过手机短信报警, ...

  3. TOM、网易、腾讯企业邮箱 | 邮箱登录入口你了解多少?

    外贸.物流.传媒.互联网科技等公司,无论规模大小,一般都会从TOM.网易.QQ这些大厂邮箱中的一个作为公司邮箱,员工人数多会开通企业邮箱,人数少会注册VIP邮箱,为什么呢? 因为企业邮箱安全性高.企业 ...

  4. 利用python读取excel中邮箱进行批量群发,使用中国移动内部邮箱或139邮箱-html编辑的正文并且带附件。

    简介 此项目是通过读取excel文件内容(包含公司名称,公司类型,邮箱-每个公司对应多个邮箱)自动批量发送邮件到目标公司.亲测可用. 完整代码 import smtplib from email.mi ...

  5. SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)

    目录 一.获取邮箱授权码 二.引入依赖 三.配置文件(请注意yml格式,或者使用.properties) 四.不带附件发邮箱 五.带附件发邮箱 六.邮箱类型拓展 本篇文章以QQ邮箱作为发件人写案例演示 ...

  6. SpringBoot 2.x 集成QQ邮箱、网易系邮箱、Gmail邮箱发送邮件

    在Spring中提供了非常好用的 JavaMailSender接口实现邮件发送,在SpringBoot的Starter模块中也为此提供了自动化配置. 项目源码已托管在Gitee-SpringBoot_ ...

  7. 邮箱发送邮件(包含附件,网易、QQ)

    效果图 代码 package com.mabo.email;import javax.activation.DataHandler; import javax.activation.DataSourc ...

  8. 用python自动发送邮件(139邮箱——qq邮箱)报错,求解

    源代码如下: import smtplib from email.mime.text import MIMEText from email.utils import formataddr from e ...

  9. python发送文件到指定的邮箱_怎么用qq邮箱发文件-用python发送139邮箱电子邮件和短信通知,让你不再错过重要信息...

    今天,咿哑呀为大家介绍怎样发送电子邮件,实现邮件到达短信通知,让你不再错过重要信息的获取.我们知道,139邮箱有邮件到达时,会自动发短信给用户,我们就可以利用这个功能,向用户的139邮箱发送邮件并获得 ...

最新文章

  1. 聊一聊多源最短路径问题(只有5行代码哦)
  2. ADO.NET—数据提供程序(连接类)
  3. 3D目标检测2021
  4. ant构建项目迁移到gradle_Gradle构建工具
  5. go语言io reader_【已解决】go语言中如何使用io的MultiWriter
  6. 小白 LeetCode 242 有效的字母异位词
  7. 回调函数 线程_从0实现基于Linux socket聊天室-多线程服务器一个很隐晦的错误-2...
  8. realme x2 深度测试打不开_realme 的产品到底是不是贴牌的?
  9. kubernetes实践指南
  10. 徐州市建筑物矢量数据(Shp格式+带高度)
  11. 43种名车标志及来历
  12. ResourceManager HA 配置
  13. 有源和无源设备的共质心布局:回顾和未来之路
  14. 党务管理系统搭建,答题获积分,学习有好礼
  15. 我现在的笔记有哪几个地方?
  16. 稀疏光流和稠密光流,OpenCV实现
  17. js方法在ie浏览器不起作用
  18. 百度网站收录 百度网站收录链接提交
  19. chatgpt赋能python:Python如何进行断点运行
  20. IT职业教育(16)教学过程控制

热门文章

  1. gulp.spritesmith gulp插件
  2. 防作弊-页面失焦与禁键
  3. 复工别慌,这里有 24 个渠道可以买到口罩
  4. python矩阵的右下半部分【简单易懂,代码可以直接运行】
  5. 【Jetpack】学穿:LiveData →
  6. Python Seaborn (1) 艺术化的图表控制
  7. html5图钉效果,图钉风格在美国现代设计发展中的作用与影响
  8. 封神台-getshell
  9. 消息中间件----内存数据库 Redis7(第3章 Redis 命令)
  10. 如何把视频做成gif动态图?三步完成mp4转gif