flask-mail异步发送邮件_SpringBoot 2.0 集成 JavaMail ,实现异步发送邮件

一、JavaMail的核心API

1、API功能图解

7b527e7317b16b6f55586c28d4306c25.png

2、API说明

(1)、Message 类:

javax.mail.Message 类是创建和解析邮件的一个抽象类子类javax.mail.internet.MimeMessage :表示一份电子邮件。 发送邮件时,首先创建出封装了邮件数据的 Message 对象, 然后把这个对象传递给邮件发送Transport 类,执行发送。接收邮件时,把接收到的邮件数据封装在Message 类的实例中,从这个对象中解析收到的邮件数据。

(2)、Transport 类

javax.mail.Transport 类是发送邮件的核心API 类创建好 Message 对象后, 只需要使用邮件发送API 得到 Transport 对象, 然后把 Message 对象传递给 Transport 对象, 并调用它的发送方法, 就可以把邮件发送给指定的邮件服务器。

(3)、Store 类

javax.mail.Store 类是接收邮件的核心 API 类实例对象代表实现了某个邮件接收协议的邮件接收对象,接收邮件时, 只需要得到 Store 对象, 然后调用 Store 对象的接收方法,就可以从指定的邮件服务器获得邮件数据,并把这些邮件数据封装到表示邮件的 Message 对象中。

(4)、Session 类:

javax.mail.Session 类定义邮件服务器的主机名、端口号、协议等Session 对象根据这些信息构建用于邮件收发的 Transport 和 Store 对象, 以及为客户端创建 Message 对象时提供信息支持。

二、邮件服务器配置

以 smtp 为例

1、smtp.mxhichina.com

阿里云企业邮箱配置(账号+密码)

2、smtp.aliyun.com

阿里云个人邮箱配置(账号+密码)

3、smtp.163.com

网易邮箱配置(账号+授权码)

三、公共代码块

1、邮件通用配置

 package com.email.send.param;/** * 邮箱发送参数配置 */public class EmailParam { /** * 邮箱服务器地址 */ // public static final String emailHost = "smtp.mxhichina.com" ; 阿里云企业邮箱配置(账号+密码) // public static final String emailHost = "smtp.aliyun.com" ; 阿里云个人邮箱配置(账号+密码) public static final String emailHost = "smtp.163.com" ; // 网易邮箱配置(账号+授权码) /** * 邮箱协议 */ public static final String emailProtocol = "smtp" ; /** * 邮箱发件人 */ public static final String emailSender = "xxxxxx@163.com" ; /** * 邮箱授权码 */ public static final String password = "authCode"; /** * 邮箱授权 */ public static final String emailAuth = "true" ; /** * 邮箱昵称 */ public static final String emailNick = "知了一笑" ;}

2、常用常量

package com.email.send.param;/** * 邮件发送类型 */public enum EmailType { EMAIL_TEXT_KEY("email_text_key

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 9中什么是私有的?

在进行面试时,我发现大多数应聘者都不知道Java中的private修饰符真正意味着什么。 他们知道一些足以进行日常编码的事情,但还远远不够。 这不成问题。 足够了解就足够了。 但是,了解Java的一些内部工作仍然很有趣。 在极少数情况下&#xff0…

java switch case怎么判断范围_【转】Java期末复习攻略!

期末19年就这样要过去了,终于到了小时候作文里的未来呢!然而,期末考试也随之来临了。不知大家“预习”的怎么样呢? 期末复习资料的放送快接近尾声了下面康康学长学姐们怎么教你们打java这个boss(下面是java大佬给大家的复习建议以…

spring aop示例_Spring JpaRepository示例(内存中)

spring aop示例这篇文章描述了一个使用内存中HSQL数据库的简单Spring JpaRepository示例。 该代码示例可从GitHub的Spring-JpaRepository目录中获得。 它基于带有注释的Spring-MVC-示例和此处提供的信息 。 JPA资料库 在此示例中,我们实现了一个虚拟bean&#xff1…

python人工智能入门优达视频_机器学习:优达教你搭建Python 环境的正确姿势

原标题:机器学习:优达教你搭建Python 环境的正确姿势为机器学习搭建好 Python 环境听起来简单,但有时候坑还不少。如果此前没有配置过类似的环境,很可能会苦苦折腾各种命令好几个小时。可是我明明只是想马上搞起来我的机器学习! 在…

java ee cdi_Java EE CDI ConversationScoped示例

java ee cdi在本教程中,我们将向您展示如何在Web应用程序中创建和使用ConversationScoped Bean。 在CDI中,bean是定义应用程序状态和/或逻辑的上下文对象的源。 如果容器可以根据CDI规范中定义的生命周期上下文模型来管理其实例的生命周期,则…

js input 自动换行_深入Slate.js - 拯救 ContentEditble

我们是钉钉的文档协同团队,我们在做一些很有意义的事情,其中之一就是自研的文字编辑器。为了把自研文字编辑器做好,我们调研了开源社区各种优秀编辑器,Slate.js 是其中之一(实际上,自研文字编辑器前&#x…

printf 地址_C程序显示主机名和IP地址

查找本地计算机的主机名和IP地址的方法有很多。这是使用C程序查找主机名和IP地址的简单方法。我们将使用以下功能:gethostname() :gethostname函数检索本地计算机的标准主机名。gethostbyname() :gethostbyname函数从主机数据库中检索与主机名…

java 定义变量时 赋值与不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...

探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,float,double)只有开发人员对其进行初始化,java不会对其进行初始化,如果不初始…

java 字符串 移位_使用位运算、值交换等方式反转java字符串-共四种方法

在本文中,我们将向您展示几种在Java中将String类型的字符串字母倒序的几种方法。StringBuilder(str).reverse()char[]循环与值交换byte循环与值交换apache-commons-lang3如果是为了进行开发,请选择StringBuilder(str).reverse()API。出于学习的目的&…

xstream xml模板_XStream – XStreamely使用Java中的XML数据的简便方法

xstream xml模板有时候,我们不得不处理XML数据。 而且大多数时候,这不是我们一生中最快乐的一天。 甚至有一个术语“ XML地狱”描述了程序员必须处理许多难以理解的XML配置文件时的情况。 但是,不管喜欢与否,有时我们别无选择&…

python知识点智能问答_基于知识图谱的智能问答机器人

研究背景及意义 智能问答是计算机与人类以自然语言的形式进行交流的一种方式,是人工智能研究的一个分支。 知识图谱本质上是一种语义网络,其结点代表实体(entity)或者概念(concept),边代表实体/…

java会了还学什么_java都学哪些内容?学完之后可以做哪些工作?

展开全部阶段一:揭开企业开发神秘面纱 (4周32313133353236313431303231363533e78988e69d8331333431336163)1) Web开发基础:HTML语言、JavaScript、CSS、DOM等2) Oracle数据库基础:安装、配置Oracle数据库,熟练掌握SQL语句3) 操作系…

Java中的RAII

资源获取即初始化( RAII )是Bjarne Stroustrup用C 引入的一种用于异常安全资源管理的设计思想。 感谢垃圾回收,Java 没有此功能,但是我们可以使用try-with-resources实现类似的功能。 约翰哈德斯(John Huddles&#x…

eclipse juno_Eclipse Juno上带有GlassFish的JavaEE 7

eclipse junoJava EE 7很热。 前四个JSR最近通过了最终批准选票,与此同时GlassFish 4达到了升级版83。 如果您关注我的博客,那么您将了解NetBeans的大部分工作。 但是我确实认识到,那里还有其他IDE用户,他们也有权试用最新和最出色…

java 生成校验验证码_java 验证码生成与校验

java绘图相关类验证码工具类package dt2008.util;import javax.imageio.ImageIO;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.awt.*;import java.awt.image.BufferedImage;import java.io.IOException;import ja…

红黑树中nil结点_什么是红黑树?程序员面试必问!

点击上方java小组,选择“置顶公众号”优质文章,第一时间送达当在10亿数据中只需要进行10几次比较就能查找到目标时,不禁感叹编程之魅力!人类之伟大呀! —— 学红黑树有感。终于,在学习了几天的红黑树相关的…

杰克逊JSON解析错误-UnrecognizedPropertyException:无法识别的字段,未标记为可忽略[已解决]...

在解析从我们的一个RESTful Web服务接收到的JSON字符串时,我收到此错误“线程“ main”中的异常com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“人”(类Hello $ Person),不是标记…

mysql2008数据库配置_SQL Server 2008 R2 超详细安装图文教程

这篇文章主要介绍了SQL Server 2008 R2 超详细安装图文教程,需要的朋友可以参考下一、下载SQL Server 2008 R2安装文件二、将安装文件刻录成光盘或者用虚拟光驱加载,或者直接解压,打开安装文件,出现下面的界面安装SQL Server 2008 R2需要.NET…

hdfs读写流程_深度探索Hadoop分布式文件系统(HDFS)数据读取流程

一、开篇Hadoop分布式文件系统(HDFS)是Hadoop大数据生态最底层的数据存储设施。因其具备了海量数据分布式存储能力,针对不同批处理业务的大吞吐数据计算承载力,使其综合复杂度要远远高于其他数据存储系统。因此对Hadoop分布式文件系统(HDFS)的深入研究&a…

mysql隔离级别验证_MySQL事务隔离级别以及验证

查询初始数据开启A事务  并做更新操作再另一端 B开始另一个事务查询 事务级别设置为读未提查询到事务未提交的数据 a的count修改为3 但是没有提交2 第二个级别 读已提交 避免脏读问题 但是有不可重复读问题回滚数据 修改隔离级别 确保都是 读已提交级别客户端A客户端B验证 脏…