SpringBoot实现qq邮箱发送邮件
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邮箱发送邮件相关推荐
- SpringBoot实现QQ邮箱发送功能
SpringBoot实现QQ邮箱发送功能 一. 前言 1.互联网发展到现在,相必大家都知道发送邮件应该是网站的必备功能之一:用户注册发送邮箱验证.忘记密码.监控提醒以及发送营销信息等. Spring提 ...
- SpringBoot通过qq邮箱发送验证码
SpringBoot通过qq邮箱发送验证码 1.开启qq授权码 2.编写配置文件 spring:#邮箱验证mail:##163 smtp.163.com(反垃圾系统发送不了了)##qq smtp.qq ...
- java发送qq邮箱不成功_java,_使用QQ邮箱发送邮件遇到的问题,java - phpStudy
使用QQ邮箱发送邮件遇到的问题 代码是在网上抄的别人今年写的,但是我运行起来一直报错,也不知道什么原因,请大神帮忙指点一下::谢谢!!! 以下是我的代码 public class Sendmail8 ...
- legend3---lavarel中使用qq邮箱发送邮件
legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...
- python3利用smtplib通过qq邮箱发送邮件
前言 本文主要给大家介绍了关于python3 smtplib通过qq邮箱发送邮件的相关内容, smtplib模块是smtp简单邮件传输协议客户端的实现,为了通用性,有时候发送邮件的时候要带附件或图片, ...
- php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现
这篇文章主要介绍了关于PHP 利用QQ邮箱发送邮件的实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 ...
- Java基于JavaMail实现向QQ邮箱发送邮件遇到的问题
最近使用Java基于JavaMail实现向QQ邮箱发送邮件老是发送失败,在网上搜了下,终于找到原因,记录下. 参考:http://www.jb51.net/article/78405.htm 网上还有 ...
- 基于java mail实现简单的QQ邮箱发送邮件
刚学习到java邮件相关的知识,先写下这篇博客,方便以后翻阅学习. -----------------------------第一步 开启SMTP服务 在 QQ 邮箱里的 设置->账户里开启 S ...
- Java mail使用QQ邮箱发送邮件配置方案
Java mail使用QQ邮箱发送邮件配置方案 java mail配置了QQ邮箱作为服务器发送邮件,结果导致出现503异常: Authentication failed; nested excepti ...
最新文章
- echarts geo地图示例_python小白的画地图合集(使用pyecharts)
- 星系超级计算机,Mira超级计算机“最后的旅程”:阿贡实验室进行了一次超大规模宇宙模拟...
- python import 文件路径_python之import子目录文件
- 掌握基于AOP事务管理
- Java 集合 之 Vector
- 普通队列(数组实现)
- 在mysql中字符串的操作_mysql中的字符串操作.doc
- TypeError: unsupported type for timedelta days component: Series
- 走进爆发中的AIOps
- 关于区块链的一点经济学思考
- 3个动作精准引流方法,放大操作,每天吸粉200+
- 基于stm32单片机PT100铂电阻温度采集系统
- oracle 人民币符号,人民币的符号的正确表示法?一杠?两杠?
- 苹果cms怎么一键删除所有视频
- aspen压缩因子_Aspen物性参数中英文对照
- 阿里云物联网是什么?
- 地理生物结业考_不到30天,初二学年地理、生物结业考试开考,老师们说……...
- 4、关于step的设置
- 李彦宏一声「萝卜快跑」,中国首个无人车出行App就位!网友:这才是科技公司该干的事儿...
- Github - repository project 区别?
热门文章
- 计算机硬盘写入错误怎么办,电脑连接移动硬盘进行读写时为什么总是出错 如何解决?...
- 魔兽世界怀旧服服务器最新阵营比例,魔兽世界怀旧服12月最新转服前人口普查 联盟部落阵营比例数据...
- 这是网络工程师最详细的必备软件整理,附最新安装包
- rust货轮什么时候出现_中秋节是什么时候出现,赏月吃月饼又是何时兴起的
- 盗版软件的制作流程及制作周期
- ListActivity和ListView
- Python——sqlalchemy.exc.InvalidRequestError
- 计算机基础c语言试题,计算机应用基础C语言测试题.doc-资源下载在线文库www.lddoc.cn...
- 游戏中口型动画合成系统
- mini2440 u-boot-2009.03 移植最详细攻略