在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邮箱功能相关推荐

  1. SpringBoot实现发送QQ邮箱验证码

    SpringBoot实现发送QQ邮箱验证码 打开qq邮箱官网 点击设置 找到开启服务:POP3/SMTP 然后复制给的密授权码(记住) 导入maven依赖坐标 <!--qq邮箱--> &l ...

  2. 用java代码实现发送QQ邮箱功能

    首先开启POP3/SMTP服务 这里以我自己的QQ为例,打开QQ空间,点击设置 点击账户 向下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务选项设置 找到POP ...

  3. html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python

    这篇文章主要为大家详细介绍了Python3实现发送QQ邮件功能,html格式的qq邮件,具有一定的参考价值,对Python3感兴趣的小伙伴们可以参考一下本文,本文为大家分享了Python3实现发送QQ ...

  4. C# WinForm 使用SMTP协议发送QQ邮箱验证码

    文章目录 前言 功能实现步骤 一.获取QQ邮箱授权码 二.功能界面 三.创建发送邮箱验证码的类 四.在From1中调用类中的函数,实现功能 前言   在程序设计中,发送验证码是常见的一个功能,用户在注 ...

  5. QQ邮箱功能详解:QQ秀形象签名(转)

    QQ邮箱功能详解:QQ秀形象签名(转) 通过QQ邮箱,您可以发送一封幽默风趣,多姿多彩的邮件给您的好友,而且这一切都并不难实现,贴上您的QQ秀形象签名,插入几个搞怪的QQ表情,选择一张贴近心意的信纸- ...

  6. php使用qq发邮件怎么发,php 发送QQ邮箱邮件

    这是我的源码比较简陋 https://www.lanzous.com/i2l7h8f 感谢 https://www.cnblogs.com/woider/p/6980456.html 下载phpmai ...

  7. Python3 发送QQ邮箱(含附件)

    Python3 发送QQ邮箱(含附件) 准备工作: 1.用到的python包:smtplib和email 2.获取qq邮箱授权码:在qq邮箱的设置里面的账户下面,开启POP3/SMTP服务和IMAP/ ...

  8. 发送qq邮箱激活邮件工具类

    qq邮箱授权码在设置找 package com.Util;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.*; impo ...

  9. springboot发送QQ邮箱

    springboot发送电子邮箱 1.开启qq邮箱开启IMAP/SMTP服务* 首先进入qq邮箱 点击设置 点击账户,然后往下拉 开启IMAP/SMTP服务 开启成功得到授权密码,这个要记住,一会用 ...

最新文章

  1. WebApi_基于Token的身份验证——JWT
  2. 使用 VNC 无屏幕远程连接树莓派
  3. 20190318-使用类做一个简单的图书馆管理系统
  4. 使用EL表达式接收url的传值
  5. 征战蓝桥 —— 2013年第四届 —— C/C++A组第7题——错误票据
  6. SequoiaDB 系列之五 :源码分析之main函数
  7. 阿里云ECS,搭建MySQL5.7数据库环境
  8. 用代码获取Oracle服务名清单
  9. 信息学奥赛一本通(2067:【例2.5】圆)
  10. python技能(1)-map函数
  11. 用自然语言教育人工智能:百度新算法发展出zero-shot学习能力
  12. Java 8日期– LocalDate,LocalDateTime,即时
  13. 使用Maven导入MySQL驱动包遇到的问题
  14. 宝马、奔驰、路虎、捷豹、卡宴、杜比音效DTS音乐下载
  15. UE/蓝图 VR高级框架(AdvancedFrameworkVR4.1) 使用前的简单设置
  16. 计算机本科生优秀毕业论文,本科毕业论文计算机
  17. 个人理解设计为何要多用组合,少用继承
  18. IDM Internet Download Manager (IDM)临时文件夹
  19. 关于Kaggle入门Titanic的一次简单尝试Part 2 -- Dive into ML
  20. 技能系统(Unity 3D)——学习笔记(三)

热门文章

  1. 使用andorid studio获取经纬度信息
  2. Kali Linux介绍(安装教程)
  3. 从大陆访问,阿里云和腾讯云的香港云服务器,哪个更快?
  4. Android及IOS微信5,Android版微信5.0今日正式发布 与iOS版略不同
  5. 遮罩层——通过阴影弱化背景的四种方案
  6. 计算机专硕都发什么论文,比较好写的计算机研究生发论文题目 计算机研究生发论文标题怎样定...
  7. PHP网页代理cc攻击无需对接版源码
  8. Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】
  9. 【内有福利】5.7K画质高品质防抖:运动全景相机开启新纪元
  10. 三维匹配_三维GIS数据融合的基本方法与进展