SpringBoot实现发送QQ邮箱功能
在SpringBoot使用第三方的功能,无外乎这几个步骤
下面是一个用户修改密码,发送邮箱验证码的案例,话不多说,直接上代码!:
1.引入对应依赖
<!-- QQ邮件依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!--工具类--><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>
2.编写配置文件
spring: mail:host: smtp.qq.comusername: xxx@qq.compassword: oawuqsheuaxbbaec #qq邮箱开启发送邮件授权,然后会给你一个密码port: 587default-encoding: utf-8properties:mail:smtp:ssl:enable: falserequired: falsedebug: true
3.注入类,使用对应方法
package com.kgc.service.impl;import com.kgc.service.EmailService;import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import javax.mail.MessagingException;
import java.util.Date;
import java.util.concurrent.TimeUnit;@Service
public class EmailServiceImpl implements EmailService {private static final Logger logger = LoggerFactory.getLogger(EmailService.class);/*** 注入邮件工具类*/@Resourceprivate JavaMailSenderImpl javaMailSender;@Value("${spring.mail.username}")private String sendMailer;@Resourceprivate RedisTemplate redisTemplate;/*** 检测邮件信息类* @param to 接收信息的目标邮箱* @param subject 邮箱主题* @param text 邮件内容*/private void checkMail(String to,String subject,String text){if(StringUtils.isEmpty(to)){throw new RuntimeException("邮件收信人不能为空");}if(StringUtils.isEmpty(subject)){throw new RuntimeException("邮件主题不能为空");}if(StringUtils.isEmpty(text)){throw new RuntimeException("邮件内容不能为空");}}/*** 发送html邮件* @param to 接收信息的目标邮箱* @param subject 标题* @param content 内容* @param uid 登陆用户的id*/public void sendHtmlMailMessage(String to,String subject,String content,String uid){logger.info("EmailServiceImpl sendHtmlMailMessage params:"+to+",subject:"+subject+",content:"+content+",uid:"+uid);//生成的随机6位输验证码int randomStr = ((int) ((Math.random() * 9 + 1) * 100000));content="<!DOCTYPE html>\n" +"<html>\n" +"<head>\n" +" <base target=\"_blank\" />\n" +" <style type=\"text/css\">::-webkit-scrollbar{ display: none; }</style>\n" +" <style id=\"cloudAttachStyle\" type=\"text/css\">#divNeteaseBigAttach, #divNeteaseBigAttach_bak{display:none;}</style>\n" +" <style id=\"blockquoteStyle\" type=\"text/css\">blockquote{display:none;}</style>\n" +" <style type=\"text/css\">\n" +" 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}\n" +" td, input, button, select, body{font-family:Helvetica, 'Microsoft Yahei', verdana}\n" +" 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%}\n" +" th,td{font-family:arial,verdana,sans-serif;line-height:1.666}\n" +" img{ border:0}\n" +" header,footer,section,aside,article,nav,hgroup,figure,figcaption{display:block}\n" +" blockquote{margin-right:0px}\n" +" </style>\n" +"</head>\n" +"<body tabindex=\"0\" role=\"listitem\">\n" +"<table width=\"700\" border=\"0\" align=\"center\" cellspacing=\"0\" style=\"width:700px;\">\n" +" <tbody>\n" +" <tr>\n" +" <td>\n" +" <div style=\"width:700px;margin:0 auto;border-bottom:1px solid #ccc;margin-bottom:30px;\">\n" +" <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"700\" height=\"39\" style=\"font:12px Tahoma, Arial, 宋体;\">\n" +" <tbody><tr><td width=\"210\"></td></tr></tbody>\n" +" </table>\n" +" </div>\n" +" <div style=\"width:680px;padding:0 10px;margin:0 auto;\">\n" +" <div style=\"line-height:1.5;font-size:14px;margin-bottom:25px;color:#4d4d4d;\">\n" +" <strong style=\"display:block;margin-bottom:15px;\">尊敬的用户:<span style=\"color:#f60;font-size: 16px;\"></span>您好!</strong>\n" +" <strong style=\"display:block;margin-bottom:15px;\">\n" +" 您正在进行易买网的<span style=\"color: red\">修改密码</span>操作,请在验证码输入框中输入:<span style=\"color:#f60;font-size: 24px\">"+randomStr+"</span>,以完成操作。\n" +" </strong>\n" +" </div>\n" +" <div style=\"margin-bottom:30px;\">\n" +" <small style=\"display:block;margin-bottom:20px;font-size:12px;\">\n" +" <p style=\"color:#747474;\">\n" +" 注意:此验证码有效期为300秒,请及时完成操作\n" +" <br>注意:此操作可能会修改您的密码、登录邮箱或绑定手机。如非本人操作,请及时登录并修改密码以保证帐户安全\n" +" <br>(工作人员不会向你索取此验证码,请勿泄漏!)\n" +" </p>\n" +" </small>\n" +" </div>\n" +" </div>\n" +" <div style=\"width:700px;margin:0 auto;\">\n" +" <div style=\"padding:10px 10px 0;border-top:1px solid #ccc;color:#747474;margin-bottom:20px;line-height:1.3em;font-size:12px;\">\n" +" <p>此为系统邮件,请勿回复<br>\n" +" 请保管好您的邮箱,避免账号被他人盗用\n" +" </div>\n" +" </div>\n" +" </td>\n" +" </tr>\n" +" </tbody>\n" +"</table>\n" +"</body>\n"+"</html>";System.err.println("验证码为:"+randomStr);try {//true 代表支持复杂的类型MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(),true);//邮件发信人mimeMessageHelper.setFrom(sendMailer);//邮件收信人 1或多个mimeMessageHelper.setTo(to.split(","));//邮件主题mimeMessageHelper.setSubject(subject);//邮件内容 true 代表支持htmlmimeMessageHelper.setText(content,true);//邮件发送时间mimeMessageHelper.setSentDate(new Date());//发送邮件javaMailSender.send(mimeMessageHelper.getMimeMessage());//将用户的id和验证码作为key:value存进去,如果用户重复发送,则会覆盖之前的,最新的验证码才能生效redisTemplate.opsForValue().set(uid,String.valueOf(randomStr),5, TimeUnit.MINUTES);System.out.println("存进去的验证码:"+redisTemplate.opsForValue().get(uid));logger.debug("发送邮件成功:"+sendMailer+"->"+to);} catch (MessagingException e) {e.printStackTrace();logger.error("发送邮件失败:"+e.getMessage());}}
}
如果对大家有帮助,希望点个赞支持一下,非常感谢!
SpringBoot实现发送QQ邮箱功能相关推荐
- SpringBoot实现发送QQ邮箱验证码
SpringBoot实现发送QQ邮箱验证码 打开qq邮箱官网 点击设置 找到开启服务:POP3/SMTP 然后复制给的密授权码(记住) 导入maven依赖坐标 <!--qq邮箱--> &l ...
- 用java代码实现发送QQ邮箱功能
首先开启POP3/SMTP服务 这里以我自己的QQ为例,打开QQ空间,点击设置 点击账户 向下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务选项设置 找到POP ...
- html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python
这篇文章主要为大家详细介绍了Python3实现发送QQ邮件功能,html格式的qq邮件,具有一定的参考价值,对Python3感兴趣的小伙伴们可以参考一下本文,本文为大家分享了Python3实现发送QQ ...
- C# WinForm 使用SMTP协议发送QQ邮箱验证码
文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言 在程序设计中,发送验证码是常见的一个功能,用户在注 ...
- QQ邮箱功能详解:QQ秀形象签名(转)
QQ邮箱功能详解:QQ秀形象签名(转) 通过QQ邮箱,您可以发送一封幽默风趣,多姿多彩的邮件给您的好友,而且这一切都并不难实现,贴上您的QQ秀形象签名,插入几个搞怪的QQ表情,选择一张贴近心意的信纸- ...
- php使用qq发邮件怎么发,php 发送QQ邮箱邮件
这是我的源码比较简陋 https://www.lanzous.com/i2l7h8f 感谢 https://www.cnblogs.com/woider/p/6980456.html 下载phpmai ...
- Python3 发送QQ邮箱(含附件)
Python3 发送QQ邮箱(含附件) 准备工作: 1.用到的python包:smtplib和email 2.获取qq邮箱授权码:在qq邮箱的设置里面的账户下面,开启POP3/SMTP服务和IMAP/ ...
- 发送qq邮箱激活邮件工具类
qq邮箱授权码在设置找 package com.Util;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*; impo ...
- springboot发送QQ邮箱
springboot发送电子邮箱 1.开启qq邮箱开启IMAP/SMTP服务* 首先进入qq邮箱 点击设置 点击账户,然后往下拉 开启IMAP/SMTP服务 开启成功得到授权密码,这个要记住,一会用 ...
最新文章
- WebApi_基于Token的身份验证——JWT
- 使用 VNC 无屏幕远程连接树莓派
- 20190318-使用类做一个简单的图书馆管理系统
- 使用EL表达式接收url的传值
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第7题——错误票据
- SequoiaDB 系列之五 :源码分析之main函数
- 阿里云ECS,搭建MySQL5.7数据库环境
- 用代码获取Oracle服务名清单
- 信息学奥赛一本通(2067:【例2.5】圆)
- python技能(1)-map函数
- 用自然语言教育人工智能:百度新算法发展出zero-shot学习能力
- Java 8日期– LocalDate,LocalDateTime,即时
- 使用Maven导入MySQL驱动包遇到的问题
- 宝马、奔驰、路虎、捷豹、卡宴、杜比音效DTS音乐下载
- UE/蓝图 VR高级框架(AdvancedFrameworkVR4.1) 使用前的简单设置
- 计算机本科生优秀毕业论文,本科毕业论文计算机
- 个人理解设计为何要多用组合,少用继承
- IDM Internet Download Manager (IDM)临时文件夹
- 关于Kaggle入门Titanic的一次简单尝试Part 2 -- Dive into ML
- 技能系统(Unity 3D)——学习笔记(三)
热门文章
- 使用andorid studio获取经纬度信息
- Kali Linux介绍(安装教程)
- 从大陆访问,阿里云和腾讯云的香港云服务器,哪个更快?
- Android及IOS微信5,Android版微信5.0今日正式发布 与iOS版略不同
- 遮罩层——通过阴影弱化背景的四种方案
- 计算机专硕都发什么论文,比较好写的计算机研究生发论文题目 计算机研究生发论文标题怎样定...
- PHP网页代理cc攻击无需对接版源码
- Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】
- 【内有福利】5.7K画质高品质防抖:运动全景相机开启新纪元
- 三维匹配_三维GIS数据融合的基本方法与进展