目录

需求背景

实现过程

开启POP3/SMTP服务

书写发送邮件部分代码

测试结果

接口请求

发送成功

异常示例

邮箱授权码错误

邮箱服务器地址错误

使用邮箱密码而非生成的授权码

邮箱未开启POP3/SMTP服务

总结


需求背景

  • 因项目需求,需要实现Java发送邮件预警,这里简单的做一个spring boot项目实现Java发送邮件示例(简单调通);
  • 发送邮箱:xxx@qq.com,配置项都和邮箱有关,比如qq邮箱发送和网易邮箱发送的配置就不一样;
  • 接受邮箱:不规定;
  • 项目是sprint boot项目;
  • 文章不列出踩过的坑,按照正确的步骤一把过。

实现过程

开启POP3/SMTP服务

  • 打开网站登录qq邮箱

登录QQ邮箱

  • 开启POP3/SMTP服务

书写发送邮件部分代码

  • 引入依赖
<dependencies><dependency> <groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>
</dependencies>
  • 在application.yml中添加邮箱配置
spring:mail:host: smtp.qq.com #邮箱服务器地址(其他非qq邮箱服务器地址需要对应修改)username: 11xxxxxx50@qq.com #用户名password: jchdzdeppdtjxhbhe #密码default-encoding: UTF-8mail:fromMail.addr: 11xxxxxx50@qq.com  #以谁来发送邮件

上图中的password需要登录邮箱生成,如下(按照提示发送短信就会生成):

  • 基本类:Mail
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Mail {private String to;private String subject;private String content;
}
  • 服务层接口:MailService
public interface MailService {void sendSimpleMail(Mail mail);
}
  • 服务层实现类:MailServiceImpl
@Service
public class MailServiceImpl implements MailService {final Logger logger = LoggerFactory.getLogger(this.getClass());@Autowiredprivate JavaMailSender mailSender;@Value("${mail.fromMail.addr}")private String from;@Overridepublic void sendSimpleMail(Mail mail) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(from);message.setTo(mail.getTo());message.setSubject(mail.getSubject());message.setText(mail.getContent());try {mailSender.send(message);logger.info("简单邮件已经发送。");} catch (Exception e) {logger.error("发送简单邮件时发生异常!", e);}}}
  • 控制层:MailController
@RestController
@RequestMapping("/mail")
public class TestController {@Autowiredprivate MailServiceImpl mailService;@GetMapping("/send")public void sendMail(@RequestBody Mail mail) {mailService.sendSimpleMail(mail);}
}

测试结果

接口请求

发送成功

异常示例

邮箱授权码错误

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

邮箱服务器地址错误

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Error: authentication failed

使用邮箱密码而非生成的授权码

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

邮箱未开启POP3/SMTP服务

org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: 535 Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256

注意:"邮箱授权码错误"和"邮箱未开启POP3/SMTP服务"错误一样。

总结

注意两个地方:

  • 邮箱对应的服务器地址必须要匹配,不知道可以去网上查;
  • 代码里配置的邮箱password必须是POP3/SMTP服务下生成的授权码,写实际邮箱密码会报异常 ;
  • 授权码一经生成,关闭POP3/SMTP服务后再开启,授权码依然有效(所以开启POP3/SMTP服务邮箱就存在安全风险)。

更多更详细可参考:Spring Boot (十):邮件服务 - 纯洁的微笑博客

SpringBoot实现邮件发送相关推荐

  1. Java技术:SpringBoot实现邮件发送功能

    邮件发送功能基本是每个完整业务系统要集成的功能之一,今天小编给大家介绍一下SpringBoot实现邮件发送功能,希望对大家能有所帮助! 今天主要给大家分享简单邮件发送.HTML邮件发送.包含附件的邮件 ...

  2. Springboot实现邮件发送(2020最新版)

    在正式讲解如何用Springboot发送邮件之前,先普及四个容易忽视的概念(好多教程直接忽略介绍): 1.邮件协议,简单理解下:小明给小红发了一封邮件,指的是小明登录邮箱客户端(比如通过浏览器登录QQ ...

  3. 使用SpringBoot实现邮件发送

    邮件发送是一个非常常见的功能,注册时的身份认证.重要通知发送等都会用到邮件发送.Sun公司提供了JavaMail用来实现邮件发送,但是配置烦琐,Spring中提供了JavaMailSender用来简化 ...

  4. 补习系列(12)-springboot 与邮件发送

    目录 一.邮件协议 关于数据传输 二.SpringBoot 与邮件 A. 添加依赖 B. 配置文件 C. 发送文本邮件 D.发送附件 E. 发送Html邮件 三.CID与图片 参考文档 一.邮件协议 ...

  5. SpringBoot整合邮件发送

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的SpringBoot学习步骤,提升工程化编码能力和思维能力,写出高质量代码.希望大家都能够从中有所收 ...

  6. SpringBoot整合邮件发送功能

    说在前头:本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,发布的文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正.若在阅 ...

  7. SpringBoot 实现邮件发送功能

    1.知识点疏通 邮件再项目中经常会被用到,比如邮件发送通知,比如通过邮件注册,认证,找回密码,系统报警通知,报表信息等. 接下来先了解一下邮件协议. 1.1 SMTP.POP.IMAP4协议 SMIP ...

  8. Springboot之邮件发送(内附源码)

    目录 概述 邮件协议简介 常用SMTP服务器地址 准备工作 授权密码申请 1.进入邮箱设置 2.开启SMTP服务 coding 1.Maven依赖添加 2.yml配置 3.创建参数实体 4.创建业务调 ...

  9. android javamail获取邮件太多太慢_「Java」 - SpringBoot amp; 邮件发送

    发送邮件是web应用系统的必备功能之一,用于用户注册验证.忘记密码找回或者发送营销信息.最早期使用JavaMail相关API写发送邮件的相关代码,后来Spring推出了JavaMailSender简化 ...

  10. 学习SpringBoot 集成邮件发送(参考纯洁的微笑) 记录其中遇到的问题

    2019独角兽企业重金招聘Python工程师标准>>> 1.pom里面,增加相关依赖包 <!--邮件集成--> <dependency><groupId ...

最新文章

  1. C++迟后联编和虚函数表
  2. python pyyaml模块使用示例:读取yaml文件内容
  3. Maven,Eclipse和Java 9
  4. STL源码剖析 Stack栈 queue队列
  5. java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法
  6. Flutter MaterialButton 实现圆角边框按钮
  7. Spring Boot 你所不知道的超级知识学习路线清单
  8. python中国官网-Python教程
  9. Atitit 四种自动机 fsm pda 目录 1. 自动机可分为有限自动机、后进先出自动机、线性有界自动机、图灵机等几种。它们对语言的识别能力各不相同。 2 1.1. 抽象自动机的理论。 2 1.
  10. 【java工具类】将明文密码转成MD5密码
  11. 达索系统携百世慧科技亮相第二届四川装备智造国际博览会
  12. QFP封装芯片手工焊接和拆卸技巧
  13. 缓解精神内耗的“马原疗法”
  14. IT大学生成长周报 | 第 5 期
  15. 如何进行自媒体创业?你是否能把握住,短视频都有哪些变现方式?
  16. 马少平、周枫、王小川、楼天城、唐文斌……清华计算机系与AI的40年
  17. 【数据手册】LM1117L3芯片的使用
  18. updata联表修改
  19. C++转换为C需要注意的各项问题
  20. 梦飞 —— 述:我只是一个普通农民家的孩子,但我有一个梦想

热门文章

  1. 无线智能插座Android手机客户端软件展示
  2. MapReduce实战:统计不同工作年限的薪资水平
  3. pdfminer3k读取pdf文件
  4. 记一款bug管理系统(bugdone.cn)的开发过程(4) - 新增BugTalk功能
  5. JAVA 之 GC 一
  6. Stata Plus:连老师的 Stata 外部命令集
  7. iOS Kingfisher 加载 gif 图
  8. 浏览器原理 17 # 宏任务和微任务
  9. dell使用SUU升级所有固件
  10. 我的2022年度状态总结(Formal ver. )