SpringBoot实现qq邮箱发送邮件

  • 一、导入springboot提供的依赖
  • 二、在配置文件中设置邮箱信息
  • 设置邮箱
  • 三、设置邮件内容等
  • 四、设置发送邮箱为单独的线程操作

一、导入springboot提供的依赖

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

二、在配置文件中设置邮箱信息

设置邮箱

spring.mail.host=smtp.qq.comspring.mail.port=465spring.mail.protocol=smtp
# 发送邮箱的账号
spring.mail.username=XXXXX@qq.com
# 此为开通qq邮箱POP3/SMTP服务之后的激活码
spring.mail.password=********spring.mail.default-encoding=UTF-8spring.mail.test-connection=true
# 可以不用设置
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.debug=true

三、设置邮件内容等

@Component
public class RegisterEmailService {@Value("${spring.mail.username}")private String fromEmail;@Autowiredprivate JavaMailSender javaMailSender;@Asyncpublic void sendEmail(String toEmail){// 验证真的使用我们自己线程System.out.println(Thread.currentThread().getName());SimpleMailMessage message = new SimpleMailMessage();// 设置发件人账号message.setFrom(fromEmail);// 设置收件人账号message.setTo(toEmail);// 设置邮件标题message.setSubject("【Lyman】注册激活邮件");// 设置邮件内容String content = "您的注册已成功,请点击链接去激活";message.setText(content);javaMailSender.send(message);}
}

@Async:开启异步,为springboot提供的注解,我们可以重写它的线程池

四、设置发送邮箱为单独的线程操作

@EnableAsync
@Configuration(proxyBeanMethods = false)
public class EmailThreadPool implements AsyncConfigurer {//处理线程执行过程中异常(记录日志:保存现场)@Overridepublic AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {return AsyncConfigurer.super.getAsyncUncaughtExceptionHandler();}private static final int CORE_POOL_SIZE = 2;private static final int MAX_POOL_SIZE = 5;private static final int KEEP_ALIVE_SECONDS = 10;/*** 设置前缀*/private static final String THREAD_NAME_PREFIX = "email-thread-";/***  如果不设置队列上限,造成系统崩溃*/private static final int QUEUE_CAPACITY = 1000;/***  自定义线程池* @return*/@Overridepublic Executor getAsyncExecutor() {//  使用 spring 提供的线程池 定制操作ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();// 1.设置核心线程数executor.setCorePoolSize(CORE_POOL_SIZE);// 2.设置最大线程数executor.setMaxPoolSize(MAX_POOL_SIZE);// 3.设置空闲线程存活时间executor.setKeepAliveSeconds(KEEP_ALIVE_SECONDS);// 5. 设置线程工厂 (使用是JUC 线程工具类Executors 提供线程工厂 )executor.setThreadFactory(new CustomizableThreadFactory(THREAD_NAME_PREFIX));// 6. 线程任务队列要使用有界(有限的)队列executor.setQueueCapacity(QUEUE_CAPACITY);// 7. 等待当前线程池中线程任务完成才去关闭(必须设置)executor.setWaitForTasksToCompleteOnShutdown(true);// 8. 采用juc中 ThreadPoolExecutor  直接丢弃executor.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy());executor.initialize();return executor;}
}

@EnableAsync:开启异步

SpringBoot实现qq邮箱发送邮件相关推荐

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

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

  2. SpringBoot通过qq邮箱发送验证码

    SpringBoot通过qq邮箱发送验证码 1.开启qq授权码 2.编写配置文件 spring:#邮箱验证mail:##163 smtp.163.com(反垃圾系统发送不了了)##qq smtp.qq ...

  3. java发送qq邮箱不成功_java,_使用QQ邮箱发送邮件遇到的问题,java - phpStudy

    使用QQ邮箱发送邮件遇到的问题 代码是在网上抄的别人今年写的,但是我运行起来一直报错,也不知道什么原因,请大神帮忙指点一下::谢谢!!! 以下是我的代码 public class Sendmail8 ...

  4. legend3---lavarel中使用qq邮箱发送邮件

    legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...

  5. python3利用smtplib通过qq邮箱发送邮件

    前言 本文主要给大家介绍了关于python3 smtplib通过qq邮箱发送邮件的相关内容, smtplib模块是smtp简单邮件传输协议客户端的实现,为了通用性,有时候发送邮件的时候要带附件或图片, ...

  6. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现

    这篇文章主要介绍了关于PHP 利用QQ邮箱发送邮件的实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 ...

  7. Java基于JavaMail实现向QQ邮箱发送邮件遇到的问题

    最近使用Java基于JavaMail实现向QQ邮箱发送邮件老是发送失败,在网上搜了下,终于找到原因,记录下. 参考:http://www.jb51.net/article/78405.htm 网上还有 ...

  8. 基于java mail实现简单的QQ邮箱发送邮件

    刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...

  9. Java mail使用QQ邮箱发送邮件配置方案

    Java mail使用QQ邮箱发送邮件配置方案 java mail配置了QQ邮箱作为服务器发送邮件,结果导致出现503异常: Authentication failed; nested excepti ...

最新文章

  1. echarts geo地图示例_python小白的画地图合集(使用pyecharts)
  2. 星系超级计算机,Mira超级计算机“最后的旅程”:阿贡实验室进行了一次超大规模宇宙模拟...
  3. python import 文件路径_python之import子目录文件
  4. 掌握基于AOP事务管理
  5. Java 集合 之 Vector
  6. 普通队列(数组实现)
  7. 在mysql中字符串的操作_mysql中的字符串操作.doc
  8. TypeError: unsupported type for timedelta days component: Series
  9. 走进爆发中的AIOps
  10. 关于区块链的一点经济学思考
  11. 3个动作精准引流方法,放大操作,每天吸粉200+
  12. 基于stm32单片机PT100铂电阻温度采集系统
  13. oracle 人民币符号,人民币的符号的正确表示法?一杠?两杠?
  14. 苹果cms怎么一键删除所有视频
  15. aspen压缩因子_Aspen物性参数中英文对照
  16. 阿里云物联网是什么?
  17. 地理生物结业考_不到30天,初二学年地理、生物结业考试开考,老师们说……...
  18. 4、关于step的设置
  19. 李彦宏一声「萝卜快跑」,中国首个无人车出行App就位!网友:这才是科技公司该干的事儿...
  20. Github - repository project 区别?

热门文章

  1. 计算机硬盘写入错误怎么办,电脑连接移动硬盘进行读写时为什么总是出错 如何解决?...
  2. 魔兽世界怀旧服服务器最新阵营比例,魔兽世界怀旧服12月最新转服前人口普查 联盟部落阵营比例数据...
  3. 这是网络工程师最详细的必备软件整理,附最新安装包
  4. rust货轮什么时候出现_中秋节是什么时候出现,赏月吃月饼又是何时兴起的
  5. 盗版软件的制作流程及制作周期
  6. ListActivity和ListView
  7. Python——sqlalchemy.exc.InvalidRequestError
  8. 计算机基础c语言试题,计算机应用基础C语言测试题.doc-资源下载在线文库www.lddoc.cn...
  9. 游戏中口型动画合成系统
  10. mini2440 u-boot-2009.03 移植最详细攻略