转自:https://www.cnblogs.com/wushaopei/p/11979413.html
原创为注册发送验证码,本文抽取了其中的发送工具类
一、JavaMail
1、什么是JavaMail?

JavaMail,顾名思义,提供给开发者处理 电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便的执行一些常用的邮件传输。我们可以基于JavaMaiil开发出类似于 Microsoft Outlook的应用程序。

2、关于要使用JavaMail的原因?

基于现在WEB开发中对JavaMail的需求,例如:

用户注册后,网站发送一封激活邮件验证;

用户过生日,系统发送生日祝福邮件;

将最新活动和优惠以邮件的形式告知会员等等…

以上的需求都需要通过编程语言实现发送邮件功能,而JavaMail便能满足这一需求。

3、电子邮箱及邮件服务器
什么是电子邮箱?

电子邮箱(E-mail 地址) 需要在邮件服务器上进行申请,确切的说,电子邮箱其实就是用户在邮件服务器上申请的一个账户,用户在邮件服务器上申请了一个账号后,邮件服务器就会为这个账号分配一定的空间,用户从而可以使用这个账号以及空间,发送电子邮件和保存别人发送过来的电子邮件。

什么是邮箱服务器?

服务器指的是一台电脑安装了一个服务器软件,那么这台电脑就可以称为是WEB服务器,那么同样的一台电脑安装了邮件服务器软件,那么这台电脑称为是邮件服务器。

基于互联网的电子邮件功能:

要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器,例如目前网络上提供邮件服务的厂商:新浪、搜狐、网易等等他们都有自己的邮件服务器。

4、邮件收发协议
(1)SMTP协议(发送邮件)

简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是在Internet传输email的事实标准。(百度百科)

SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX (Mail eXchange) DNS。(百度百科)

用户脸上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通讯规则,SMTP协议就是用于定义这种规则的。因此,通常我们也把处理用户SMTP请求(邮件发送请求)的邮件服务器称之为SMTP服务器。

(2)POP3协议(接收邮件)

POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。(百度百科)

POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。(百度百科)

同样,用户若想从邮件服务器管理的电子邮件中接受一封电子邮件的话,他脸上邮件服务器后,也需要遵循一定的通讯格式,POP3协议用于定义这种通讯格式。

因而,通常我们也把处理用户POP3请求(邮件接受请求)的邮件服务器称之为POP3服务器。

(3)邮件收发过程的介绍:

邮件的发送、接受,在客户端软件中,由SMTP服务器进行发送操作,接受是由POP3服务器进行接收。

1、邮件发送协议-SMTP,默认端口号25

用于把用户邮件从一个服务器转到下一个服务器

2、邮件接收协议-POP3,默认端口号110

用于支持使用客户端远程管理在服务器上的电子邮件

MailUtils.java

package com.example.utils;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;@Component
public class MailUtils {@Autowiredprivate EmailConfig emailConfig;private final Logger logger = LoggerFactory.getLogger(MailUtils.class);/*** 发送邮件的方法* @Param to :给谁发邮件* @Param code : 邮件的激活码* @Param subject : 主题* @Param text  : 内容**/public  void sendMail(String toEmail, String code,final String subject,final String text){try{//1、创建邮件对象JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();//2、发邮件人邮箱javaMailSender.setUsername(emailConfig.getUsername());//3、发邮件人邮箱密码(默认使用客户端的授权码)javaMailSender.setPassword(emailConfig.getPassword());//4、设置邮件服务器主机名  SMTP服务器地址javaMailSender.setHost(emailConfig.getHost());//5、SMTP服务器: 默认端口javaMailSender.setPort(25);//6、//发送邮件协议名称javaMailSender.setProtocol("smtp");//7、编码格式javaMailSender.setDefaultEncoding("UTF-8");//8、创建连接对象,连接到邮箱服务器Properties mailProperties = new Properties();//发送服务器需要身份验证,要采用指定用户名密码的方式去认证mailProperties.put("mail.smtp.auth", true);mailProperties.put("mail.smtp.starttls.enable", true);//9、添加连接对象到邮件对象中javaMailSender.setJavaMailProperties(mailProperties);int count = 1;//10、创建//可以发送几封邮件:可以这里 for循环多次MimeMessage mimeMessage = getMimeMessage(toEmail,subject,text, javaMailSender);//11、发送邮件javaMailSender.send(mimeMessage);logger.info("发送 第"+ count + "封邮件" );count ++;logger.info("发往 "+toEmail+" 邮件发送成功");} catch (MessagingException e) {logger.error("发往 "+toEmail+" 邮件发送异常", e);}}//声明一个Message对象(代表一封邮件),从session中创建private MimeMessage getMimeMessage(String toEmail,String subject,String text, JavaMailSenderImpl javaMailSender) throws MessagingException {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");//发件人mimeMessageHelper.setFrom(emailConfig.getSenderName());//收件人  : 可以发送给多个收件人,该方法有一个重载的 数组形参mimeMessageHelper.setTo(toEmail);
//        mimeMessage.setContent();//邮件主题mimeMessageHelper.setSubject(subject);//邮件内容mimeMessageHelper.setText(text, true);return mimeMessage;}
}

调用

  mailUtils.sendMail(email,user.getCode(),"来自邮箱测试接口邮件","<h1>来自wto网站激活邮件,激活请点击以下链接:</h1><h3><a href='http://wj7ei8.natappfree.cc/regist_web/activateServlet?code="+user.getCode()+"'>http://wj7ei8.natappfree.cc/regist_web/activateServlet?code="+user.getCode()+"</a></h3>");

Spring Boot--- springboot 集成 JavaMail 实现邮箱认证相关推荐

  1. Spring Boot笔记(七) springboot 集成 JavaMail 实现邮箱认证

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 一.JavaMail 1.什么是JavaMail? JavaMail,顾名思义,提供给开发者处理 电子邮 ...

  2. Spring Boot + Shiro 集成

    2019独角兽企业重金招聘Python工程师标准>>> Spring Boot + Shiro 集成 Shiro 是一个流行的 Java 安全框架. 其实 Spring 有一个 Sp ...

  3. SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程

    前言 RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能.最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说Roc ...

  4. Spring Boot 工程集成全局唯一ID生成器 Vesta

    2019独角兽企业重金招聘Python工程师标准>>> 本文内容脑图如下: 文章共 760字,阅读大约需要 2分钟 ! 概 述 在前一篇文章 <Spring Boot工程集成全 ...

  5. 在spring boot中集成Swagger

    Swagger 在spring boot中集成Swagger 新建一个swagger项目 maven依赖 <!-- https://mvnrepository.com/artifact/io.s ...

  6. Spring Boot 快速集成第三方登录功能

    Spring Boot 快速集成第三方登录功能 前言 此 demo 主要演示 Spring Boot 项目如何使用 史上最全的第三方登录工具 - JustAuth 实现第三方登录,包括 QQ 登录.G ...

  7. Spring/Spring boot正确集成Quartz及解决@Autowired失效问题

    Spring/Spring boot正确集成Quartz及解决@Autowired失效问题 参考文章: (1)Spring/Spring boot正确集成Quartz及解决@Autowired失效问题 ...

  8. 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码

    更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...

  9. SpringBoot实战(十四):Spring Boot Admin 集成安全模块

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] Spring Boot Admin做为生产级的监控工具,必然不能随便让人去操作以免误操 ...

最新文章

  1. nginx php image,[Docker]应该把 nginx 和 PHP 放在一个 image 里还是分开?
  2. python交流群教学视频_自学 Python,视频教程和代码一看就懂,动手就废,应该这么学...
  3. 漫步最优化四十——Powell法(上)
  4. 使用 Hasor 从数据库查询显示到页面上
  5. 冒泡排序c语言程序,冒泡排序(C语言实现)
  6. echar 数据显示在小圆点里
  7. 非负矩阵分解 java_matlab练习程序(非负矩阵分解)
  8. android实现跳转支付宝微信支付,Android接入支付宝和微信支付的方法
  9. 方差为什么用平方不用绝对值,为什么要对差值求平方而不是取标准偏差的绝对值?...
  10. 佩尔方程及其在一类二元二次丢番图方程的推广
  11. 如何把纸质合同转变为电子合同?
  12. 最好用的coreldraw2020中文版,安装好后不显示评估版,显示已注册
  13. 数据结构与算法之多路查找树(2-3树、2-3-4树、B树、B+树)
  14. Python画图之饼图
  15. 2.液晶显示屏结构简介
  16. 生死狙击2等待服务器响应,《生死狙击2》劫掠测试结束:热爱不止 来日再战!...
  17. java头像选择系统_安卓Java源程序 带选择头像功能的用户注册 使用Intent回传数据...
  18. 机器学习-5朴素贝叶斯
  19. 追光几何助力RoboMaster,提升10倍效率轻松管理机械设计图纸
  20. 安徽省计算机水平考试试卷,第一次安徽省计算机水平考试试卷.doc

热门文章

  1. 无线定位技术性能对照
  2. h5、select下拉框右边加图标,深度美化页面增进用户体验
  3. 3D结构光和ToF相关资料
  4. 机器学习:基于朴素贝叶斯对花瓣花萼的宽度和长度分类预测
  5. 如何储存拨发带分机号的电话
  6. Unittest自动化测试框架教程(二)——Python中Fixture测试夹具的使用和setUp方法相关参数传递
  7. java 压缩解压密码zip_Java解压和压缩带密码的zip文件过程详解|chu
  8. 【Flutter】十七、Flutter中常用的布局容器——网格布局GridView
  9. airpods pro是按压还是触摸_山寨版AirPods Pro拆解:真是一绝!
  10. 反向迭代器reverse_iterator模拟实现