• 电子邮件以及电子邮件协议


    电子邮件

    解决了电话电报的两个缺点:

    1. 发送方和接收方必须同时在场
    2. 不是很紧迫的电话电报会打扰到对方

    电子邮件过程:

    1. 发件人将邮件发送到自己使用的邮件服务器
    2. 发送人的邮件服务器根据目的地址将邮件发送到收件人的邮件服务器中
    3. 收件人在方便地时候访问自己的邮件服务器中自己的邮箱,查看收到的邮件

    电子邮件的构成

    由用户代理、邮件服务器和电子邮件协议组成

    以下例子中发送协议以SMTP为例,收件协议以POP3为例

    1. 发送方的用户代理作为SMTP客户,与发送方的邮件服务器中的SMTP服务器建立TCP连接,使用SMTP协议将邮件发送给发送方邮件服务器。
    2. 发送方邮件服务器中的SMTP客户与接收方邮件服务器中的SMTP服务器建立TCP连接,使用SMTP协议将收到的待转发邮件发送给接收方邮件服务器
    3. 接收方的用户代理作为POP3客户,与接收方邮件服务器中的POP3服务器建立TCP连接,使用POP3协议从接收方服务器读取邮件

    电子邮件协议

    SMTP---电子邮件派发协议

    在发送方邮件服务器和接收方邮件服务器中建立连接并传送邮件,其中包含14条SMTP命令,以及有21种SMTP应答,默认端口25

    1. 首先发送方邮件服务器周期性扫描有没有新的邮件,如果有,就和接收方服务器建立TCP连接
    2. 连接建立成功后,接收方邮件服务器会发送220状态码给发送方服务器表示已经准备就绪
    3. 发送方邮件服务器会将自己的SMTP域名发送给接收方服务器
    4. 如果接收方服务器查验身份有效,会返回250状态码,否则返回其他错误码
    5. 发送方收到250状态码后,向接收方服务器发送自己的邮箱
    6. 接收方服务器认为合理则返回250,否则返回错误码
    7. 发送方收到250状态码后,向接收方发送目的邮箱地址
    8. 接收方服务器查找这个地址,存在则返回250,否则返回错误码
    9. 发送方收到250后,发送DATA命令告知接收方服务器自己准备发送邮件了
    10. 接收方如果准备好了则返回354状态码,否则返回错误码
    11. 发送方收到354状态码后,开始发送邮件
    12. 当邮件发送完后,发送方需要发送一个结束符给接收方
    13. 接收方返回250表示收件成功
    14. 发送方发送QUIT命令请求断开连接
    15. 接收方返回221接收请求并主动断开连接

    注意:每一个返回的状态码都有一个描述信息,每个服务器的描述信息可能不同

    POP -- 邮件接收协议

    邮局协议,POP3是其第三个版本,并且时因特网正式标准 110端口

    POP3协议只能下载和删除邮件、下载和保留邮件,并不能在邮件服务器上直接对邮件进行管理

    IMAP -- 邮件接收协议

    因特网邮件访问协议,IMAP4是其第四个版本,因特网建议标准 143端口

    邮件的格式

    邮件由信封和内容构成,内容又有首部和主体构成。

    首部包括四个关键字段:

    1. from:发件人邮箱地址
    2. to:收件人邮箱地址
    3. Cc:抄送人邮箱地址
    4. subject:邮件主体

    主体就是邮件的真正内容。邮件会从首部提取关键信息写到信封上。

    MIME --- 多用途因特网邮件扩展

    由于SMTP只能解析ASCII码文件数据,不能解析可执行文件或者二进制对象。也就不能传输多媒体信息,和一切非英文字

    而MIME就可以对ASCII码数据进行转换

    在传输时,将非ASCII码数据通过MIME转换为ASCII码数据,接收时将ASCII码数据转换为非ASCII码数据

    • 在MIME中新增了5个首部字段,提供有关邮件主体的信息
    • 对邮件内容的格式进行了定义,对多媒体数据进行标准化
    • 定义了传送编码,可以对任何内容进行转换

    MIME不只用于电子邮件发送和接收,同样用于http

  • 相关阅读:
    Appium自动化环境搭建
    真机Android 8.0版本以上uiautomator定位元素-Unsupported protocol: 2/Unexpected error while obtaining UI hierarchy错误处理
    rsa非对称加密
    QT使用OpenSSL的接口实现RSA的加密解密
    lua安装后其他库使用产生问题解决方法
    log4cpp的使用描述
    std::function和std::bind
    C++11线程睡眠的方式
    高精度计时器
    如何解决TCP拆包粘包问题
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12762951.html
Copyright © 2020-2023  润新知