邮件发送功能总结
       

第一部分 背景
 
一、使用场景
(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将邮件下载到本地进行查看.

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

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

    第二部分 邮件发送历史   一.第一封邮件   1.1969年10月,世界上的第一封电子邮件    1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短 ...

  2. Spring Boot 2.0 版的开源项目云收藏来了!

    给大家聊一聊云收藏从 Spring Boot 1.0 升级到 2.0 所踩的坑 先给大家晒一下云收藏的几个数据,作为一个 Spring Boot 的开源项目(https://github.com/cl ...

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

    我们使用Spring Boot 2.0 创建好我们的项目后,我们一般需要打包,然后部署到服务器上. 打包步骤: 1. 选中项目,右键——> Open Module Settings. 2. 切换 ...

  4. Spring Boot 2.0正式发布,新特性解读

    作者|翟永超 Spring Boot 2.0 来啦,有哪些新特性?升级吗? 写在前面 北京时间 3 月 1 日,经过漫长的等待之后,Spring Boot 2.0 正式发布.作为 Spring 生态中 ...

  5. Spring Boot 2.0 的快速入门(图文教程)

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! Spring Boot 2.0 的快速入门(图文教程) 大家都 ...

  6. Spring Boot 2.0 入门指南

    0x01 什么是Spring Boot? Spring Boot是用来简化Spring应用初始搭建以及开发过程的全新框架,被认为是Spring MVC的“接班人”,和微服务紧密联系在一起. 0x02 ...

  7. Spring Boot 2.0 返回JSP页面实战

    1. 模板引擎JSP的限制 在开始之前呢,我觉得我们有必要先去了解下 Spring Boot 2.0 官方文档中提到的如下内容: 模板引擎 除了REST Web服务之外,还可以使用Spring MVC ...

  8. Spring Boot 2.0 热部署指南

    Spring Boot 2.0 支持热部署,实现方法很简单 Spring Boot 2.0 有几种热重载的选项. 推荐的方法是使用spring-boot-devtools 因为它提供了额外的开发时间功 ...

  9. spring boot 2.0.3+spring cloud (Finchley)7、服务链路追踪Spring Cloud Sleuth

    参考:Spring Cloud(十二):分布式链路跟踪 Sleuth 与 Zipkin[Finchley 版] Spring Cloud Sleuth 是Spring Cloud的一个组件,主要功能是 ...

随机推荐

  1. 775. Global and Local Inversions局部取反和全局取反

    [抄题]: We have some permutation A of [0, 1, ..., N - 1], where N is the length of A. The number of (g ...

  2. day 05 字典,字典嵌套

    字典: 1.列表如果存储大量数据,查询速度相对慢一些 2.列表存储的数据,一般没有什么关联性 针对以上原因,python提供了一个基础数据类型,dict 字典 数据类型的分类 : 容器型数据类型:li ...

  3. 当前的开源SLAM方案

    开源方案 传感器形式 地址链接 MonoSLAM 单目 https://github.com/hanmekim/SceneLib2  PTAM 单目  http://www.robots.ox.ac. ...

  4. three.js raycaster射线碰撞的坑 (当canvas大小 不是屏幕大小是解决拾取物体的办法)

    这里只是记录一下坑,方便查阅,内容主要援引自:three.js Raycaster 射线拾取 canvas不占满整屏时射线拾取存在偏差 1. 世界坐标系: 世界坐标系位于屏幕的中心(0,0,0),往右 ...

  5. 前端基础之JavaScript day51

    前端基础之JavaScript   JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中) ...

  6. 编码补充 daty 6

    ---恢复内容开始--- 1.  用id求内存地址 id 查询内存地址 name = 'alex' print(id(name)) li = [1,2,3] print(id(li)) 结果: 2. ...

  7. TotoiseSVN 使用参考文章

    SVN使用教程总结 http://www.cnblogs.com/armyfai/p/3985660.html TotoiseSVN的基本使用方法 http://www.cnblogs.com/xil ...

  8. Oracle_高级功能(7) 数据字典视图和动态性能视图

    oracle数据字典 1.概念数据字典是oracle数据库用来存储数据库结构信息的地方.数据字典是用来描述数据库数据的组织方式的,由表和视图组成.数据字典基表是在任何 Oracle 数据库中创建的第一 ...

  9. mybatis进阶--mapper输入映射和输出映射

    我们知道,mapper.xml是我们配置操作数据库的sql语句的地方.其中每个sql语句对应着一个方法,每个方法都有自己的输入输出参数类型.那么这些类型都是怎么配置的呢?今天我们来一起学习下. 输入映 ...

  10. (转)wcf项目程序调试

    由于使用分布式开发,因此在调试时,要分为客户端调试和服务端调试两种情况,下面就对这两种情况的调试步骤分别加以详细说明  调试客户端的页面代码 当仅仅需要调试客户端代码时,按照以下步骤进行操作: 1. ...