IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)

邮件发送功能总结
       

第一部分 背景

一、使用场景

(1)注册验证

注册各大网站,通常需要输入邮件地址,在注册成功后,会发送一封邮箱验证的邮件,点击确认,证明这个邮箱是用户自己的

(2)网站营销

公司运营做活动的时候,提前几天给用户发邮件,提醒老用户在活动时间参加活动。

(3)安全的最后一道防线

一个网站好久不用的时候,会忘记密码,这个时候需要找回密码,很多种找回方式,最常用的找回方式就是通过邮箱找回密码。

首先,在网站输入邮箱,系统会根据注册的邮箱发送一封邮件,根据邮件中的地址,可以重新设置新的密码。

(4)提醒邮件告警

如果系统没有监控,将是一种灾难性的事件,系统被实时的监控起来,出了问题,第一时间通知到开发人员,在事态没有扩散,影响最小的时候把问题解决掉。

(5)触发机制

定时邮件的发送,计算机忘记关机,发送一个特殊的邮件,让计算机自动关机。

二、邮件发送原理

原理:需要将发送邮件者的邮件,发送到需要发送的接受者的邮箱中,发送过程中需要很多的发送协议。

(1)邮件传输协议:SMTP协议和POP3协议

SMTP全称 Simple Mail Transfer Protocol,即简单邮件传输协议.一种从源地址到目的地址,邮件传输的规范,通过它控制邮件的中转方式,特点是能在传送中,接力传送邮件,即邮件可以通过不同网络上的主机接力式的传送,SMTP主要负责底层邮件系统如何将邮件从一台服务器传送到另一台机器.

POP3全称Post Office Protocol,即邮局协议的第三个版本,它规定了怎么将个人计算机连接到Internet服务器和下载电子邮件的电子协议,它也是因特网电子邮件第一个临宪协议标准.POP3允许用户从服务器上把邮件存储到本地主机,同时,删除保存在邮件服务器上的邮件.

(2)内容不断发展:IMAP协议和Mime协议

IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol)。IMAP是斯坦福大学在1986年开发的一种邮件获取协议。它和POP3协议类似,也是邮件访问的标准之一,它和POP3不同的是,它在电子邮件客户端收取的邮件,仍然保存在服务器上,同时在客户端上的操作,都会反馈到服务器上,如在客户端上删除一个邮件,或者标记了邮件已读,那么服务器上的邮件也会相应更改其动作,因此不论从浏览器登录邮箱,还是从客户软件登录邮箱,看到的邮件的状态都是一样的,IMAP协议是对POP3协议的补充.

MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型。SMTP早期是基于ASCII字符文本的,在二进制文本处理上,并不是很好,后来又开发了编码二进制文本,比如MIME,其通过SMTP来传输,所以当今SMTP都支持八位的MIME扩展,它是二进制的传输变得几乎和传文本传输一样简单.

三、邮件发送流程

流程概述:

首先发信人在用户代理上,编辑邮件,写清发件人的邮件地址.

第二步,用户代理根据发件人编辑的信息,生成一封符合邮件格式的邮件.

第三步,用户代理把邮件发送到发信人的邮件服务器上,邮件服务器上有一个缓冲队列,发送到邮件服务器的队列,都会进入缓冲队列中,等待邮件服务器上的SMTP客户端进行发送,发件人的邮件服务器是SMTP把这封邮件,发送到收件人的邮件服务器之中

第五步,收件人的邮件服务器接收邮件之后,把这封邮件放到收件人的邮件服务器的信箱中.

最后,收件人使用收件代理来收取邮件,

收取方式:用户代理使用POP3来连接收件人所在邮件服务器,之后验证成功之后,用户代理就会把邮件服务器上的邮件读取起来,并且展示给收件人

总结:

发件人通过发件人的邮件服务器将邮件发送到发送人的DMS服务器中,通过SMTP不断的查询DNS来从一个服务器到另一个服务器,最后传送到收件人的邮箱服务器,收件人通过POP3将邮件下载到本地进行查看.

原文地址:https://www.cnblogs.com/liuyangfirst/p/9690794.html

时间: 2024-11-05 20:42:07

IntelliJ IDEA 2017版 spring-boot 2.0.3 邮件发送搭建,概念梳理 (一)的相关文章

Spring Boot 2.0 Intellij Idea 中图文详解打包成可执行Jar

我们使用Spring Boot 2.0 创建好我们的项目后,我们一般需要打包,然后部署到服务器上. 打包步骤: 1. 选中项目,右键--> Open Module Settings. 2. 切换到Artifacts 选项卡下,点击+ 号 3. 点击+ 后,可以看到有很多选项,我们选择Jar, From modules with depedency 4. Main Class 文件浏览或者搜索找到我们的主函数,勾选copy to the out put directory and link via

阿里P9告诉你 Spring Boot 2.0正式发布,升还是不升呢?

Spring帝国Spring几乎是每一位Java开发人员都耳熟能详的开发框架,不论您是一名初出茅庐的程序员还是经验丰富的老司机,都会对其有一定的了解或使用经验.在现代企业级应用架构中,Spring技术栈几乎成为了Java语言的代名词,那么Spring为什么能够在众多开源框架中脱颖而出,成为业内一致认可的技术解决方案呢?我们不妨从最初的Spring Framework开始,看看它为什么能够横扫千军,一统江湖! 挑战权威,一战成名 2004年3月,Spring的第一个版本以及其创始人Rod John

Spring Boot 2.0 热部署指南

Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功能,例如支持快速应用程序重启和LiveReload以及合理的开发时配置(如模板缓存). Devtools通过监视类路径的变化来工作. 这意味着静态资源更改必须"建立",以使更改生效. 默认情况下,当您保存更改时,这会在Eclipse中自动发生. 在IntelliJ IDEA中,Make P

Spring Boot 2.0.2 教程 - 目录

Spring Boot 2.0.2 教程 - Hello World - 01 Spring Boot 2.0.2 教程 - Hello World 之 intellij idea 创建web项目 - 02 Spring Boot 2.0.2 教程 - 配置文件application.properties - 03 Spring Boot 2.0.2 教程 - 日志管理 - 04 Spring Boot 2.0.2 教程 - 集成jsp和静态资源css,js,image的访问 - 05 Spri

Spring Boot 2.0 迁移指南

![img](https://mmbiz.qpic.cn/mmbiz_jpg/1flHOHZw6Rs7yEJ6ItV43JZMS7AJWoMSZtxicnG0iaE0AvpUHI8oM7lxz1rRsmaa4IfbolVRG2WQwhXrchmVWS8Q/640?tp=webp&wxfrom=5&wx_lazy=1&wx_co=1) ### 前提 本文档将帮助您把应用程序迁移到 Spring Boot 2.0. ### 在你开始之前 首先,**Spring Boot 2.0需要Ja

Spring Boot 2.0(一):【重磅】Spring Boot 2.0权威发布

就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring Boot官方又赶紧把 GitHub 上发布的 v2.0.0.RELEASE 版本进行了撤回.到了下午将问题修复后,又重新进行了上传,至此Spring Boot2.0正式推出! 要知道这是Spring Boot1.0发布4年之后第一次重大修订,因此有多的新功能和特性值得大家期待!在S

Spring boot 2.0 新特性之动态 Banner

Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜. 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发布的 2.0 RELEASE,现在网站https://start.spring.io/也将 Spring Boot 2.0 设置为默认版本. <parent> <groupId>org.springframework.boot</groupId> <artifactI

Spring Boot 2.0 整合 ES 5 文章内容搜索实战

本章内容 文章内容搜索思路 搜索内容分词 搜索查询语句 筛选条件 分页.排序条件 小结 一.文章内容搜索思路 上一篇讲了在怎么在 Spring Boot 2.0 上整合ES5 ,这一篇聊聊具体实战.简单讲下如何实现文章.问答这些内容搜索的具体实现.实现思路很简单: 基于「短语匹配」并设置最小匹配权重值 哪来的短语,利用 IK 分词器分词 基于 Fiter 实现筛选 基于 Pageable 实现分页排序 这里直接调用搜索的话,容易搜出不尽人意的东西.因为内容搜索关注内容的连接性.所以这里处理方法比

spring boot 2.0.0由于版本不匹配导致的NoSuchMethodError问题解析

spring boot升级到2.0.0以后,项目突然报出 NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.<init> 异常, 跟踪源代码无果的情况下.突然想到有可能是spring boot 和 spring cloud版本不匹配导致的. 于是,上官网看spring cloud的依赖,首先看Edgware.SR2版本的依赖,可以看出Edgware.SR2依赖是1.5.X版本 <par