search
HomeBackend DevelopmentPHP TutorialRFC821-简单邮件传输协议(SMTP)中文版-1_PHP
RFC821-简单邮件传输协议(SMTP)中文版-1_PHPJun 01, 2016 pm 12:37 PM
Chinese VersiontransmissionprotocolsendOrderSimplepathmail

SMTP

3.7. 域  
  域是最近被引入ARPA Internet邮件系统的。使用域可以使地址空间从一
个平面的普通字符串主机名变成全局地址的一个层次结构。主机由一个域名取
代,起始主机是由一系列元串组成,它们由逗号按最特殊到一般的顺序排列。
  例如,"USC-ISIF.ARPA","Fred.Cambridge.UK"和"PC7.LCS.MIT.ARPA"可
能是主机-域标识符。
  无论域名在SMTP中如何使用,只有正式的名称才可以被使用,不可以使用
假名或昵称。

3.8. 改变角色
  TURN命令可以用来改变在传输信道上通信的程序的角色。如果程序A现在是
发送SMTP,它发送TURN命令并接到OK应答(250)后,它就变为接收SMTP了。同
理,程序B也可以从接收SMTP变为发送SMTP。若要拒绝改变角色,接收方可以发
送502作为应答。
  注意:此命令是可选的。在使用TCP的传输信道时,一般不使用此命令。然
而,当建立传输信道的代价比较大时,此命令很有用。例如,此命令可以支持一
般公共交换电话系统作为传输信道。

4. SMTP说明  
4.1. SMTP命令  
4.1.1. 命令语法  
  SMTP命令定义了邮件传输或由用户定义的系统功能。它的命令是由
结束的字符串。而在带有参数的情况下,命令本身由和参数分开,如果
未带参数可以直接和连接。邮箱的语法格式必须和接收站点的格式一致。
下面讨论SMTP命令和应答。
  发送邮件操作涉及到不同的数据对象,它们由不同的参数相互连接。回
复路径就是MAIL命令的参数,而转发路径则是RCPT命令的参数,邮件日期是
DATA命令的参数。这些参数或者数据对象必须跟在命令后。这种模式也就要
求有不同的缓冲区来存储这些对象,也就是说,有一个回复路径缓冲区,一
个转发路径缓冲区,一个邮件内容缓冲区。特定的命令产生自己的缓冲区,
或使一个或多个缓冲的内容被清除。

  HELLO (HELO)
  此命令用于向接收SMTP确认发送SMTP。参数域包括发送SMTP的主机名。
接收SMTP通过连接确认命令来向发送SMTP确认接收SMTP。引命令和OK响应确
认发送和接收SMTP进入了初始状态,也就是说,没有操作正在执行,所有状态
表和缓冲区已经被子清除。

  MAIL (MAIL)  
  此命令用于开始将邮件发送到一个多个邮箱中。参数域包括回复路径。
返回路径中包括了可选的主机和发送者邮箱列表。当有主机列表时,它是一
个回复路径源,它说明此邮箱是由在表中的主机一一传递发送(第一个主机
是最后一个接收到此邮件的主机)过来的。此表也有作向发送者返回非传递信
号的源路径。因为每个传递主机地址都被加在此表起始处,它就必须使用发送
IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信
息的回复路径可能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将
此命令的回复路径信息插入到回复路径缓冲区中。
  RECIPIENT (RCPT)
  此命令用于确定邮件内容的唯一接收者;多个接收者将由多个此命令指定。
转发路径中包括一个可选的主机和一个必须的目的邮箱。当出现主机列表时,
这就是一个源路径,它指明邮件必须向列表中的上一个主机发送。如果接收
SMTP未实现邮件的传递发送,就会返回如未知本地用户(550)的信息给用户。
  当邮件被传递发送时,传递主机必须将自己的名称由转发路径的开始处
移至回复路径的结束处。当邮件最终到达目的地时,接收SMTP将以它的主机邮
件格式自己的名称插入目标邮件中。例如,由传递主机A接收的带有如下参
数的邮件时,
  FROM:
  TO:
  将会变成如下形式:
  FROM:
  TO:.
  此命令导致它的转发路径参数加入转发路径缓冲区中。

  DATA (DATA)
  接收者将跟在命令后的行作为邮件内容。此命令导致此命令后的邮件内容
加入邮件内容缓冲区。邮件内容可以包括所有128个ASCII码字符。邮件内容由只
包括一个句号的行结束,也就是如下的字符序列:".",它指示了
邮件的结束。
  邮件内容的结束指示要求接收者现在就处理保存的邮件内容。此过程将回复
路径缓冲区,转发路径缓冲区和邮件内容缓冲区的内容全部清空。如果操作成功,
接收者必须返回OK应答;如果失败也必须返回失败应答。
  当接收SMTP收到一条信息时,无论是用作转发还是此邮件已经到达目的地,
它都必须在邮件内容的开始处加上时间戳这一行,这一行指示了接收到邮件主
机和发出此邮件主机的标识,以及接收到邮件内容的时间和日期。转发的信件
将有多行这样的时间戳。当接收SMTP作最后一站的传送时,它将返回路径信息
行插入邮件中。此行包括了发送命令中的的信息。在这里,最
后一站的传送的意思是邮件将被送到目的用户手中,但在一些情况下,邮件可
能需要更进一步的加工并由另外的邮件系统传送。
  可能在返回路径中的邮箱与实际发送的邮件不一致,这个情况可能发生在
需要传送一个特定的错误处理信箱而不是信件发送者那里。上面所述说明了,
最后的邮件内容由一个返回路径行,和在其后的一个或多个时间戳行构成。这
些行后面是邮件内容的头和体信息。
  当处理后面的邮件数据指示部分成功时就需要特定的说明。这种情况可能
发生在发送SMTP发现当邮件需要传送给多个用户时,只能够成功地向其中的一
部分发送信息这种情况下。在这种情况下,必须对DATA命令发送OK应答,而接
收SMTP组织并发送一个"不可传递邮件"信息到信息的发送者。在此信息中或者
发送一个不成功接收者的列表,或者每次发送一个不成接收者,而发送多次。
所有不可传递邮件信息由MAIL命令发送。

  返回路径和接收时间戳例子
  Return-Path:
  Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST
  Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST
  Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST
  Date: 27 Oct 81 15:01:01 PST  
  From: JOE@ABC.ARPA  
  Subject: Improved Mailing System Installed  
  To: SAM@JKL.ARPA  

  This is to inform you that ...  


  SEND (SEND)
  此命令用于开始一个发送命令,将邮件发送到一个或多个终端上。参数
域包括了一个回复路径,此命令如果成功就将邮件发送到终端上了。  
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,
表示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的
(列表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。
因为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接
收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径
可能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将
此命令的回复路径信息插入到回复路径缓冲区中。

  SEND OR MAIL (SOML)
  此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,或者
传送到邮箱中。对于每个接收者,如果接收者终端打开,邮件内容将被传送到
接收者的终端上,否则就送到接收者的邮箱中。参数域包括回复路径,如果成
功地将信息送到终端或邮箱中此命令成功。
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表
示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列
表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。因
为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收
IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可
能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将
此命令的回复路径信息插入到回复路径缓冲区中。

  SEND AND MAIL (SAML)
  此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,并传
送到邮箱中。如果接收者终端打开,邮件内容将被传送到接收者的终端上和接
收者的邮箱中。参数域包括回复路径,如果成功地将信息送到邮箱中此命令成
功。
  回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表
示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列
表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。因
为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收
IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可
能就是空的。
  此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将
此命令的回复路径信息插入到回复路径缓冲区中。

  RESET (RSET)
  此命令指示当送邮件操作将被放弃。任何保存的发送者,接收者和邮件内
容应该被抛弃,所有缓冲区和状态表应该被清除,接收方必须返回OK应答。

  VERIFY (VRFY)
  此命令要求接收者确认参数是一个用户。如果这是(已经知道的)用户名,
返回用户的全名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮
件内容缓冲区没有影响。

  EXPAND (EXPN)
  此命令要求接收者确认参数指定了一个邮件发送列表,如果是一个邮件发送
列表,就返回表中的成员。如果这是(已经知道的)用户名,返回用户的全名和
指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有
影响。

  HELP (HELP)
  此命令导致接收者向HELP命令的发送者发出帮助信息。此命令可以带参数,
并返回特定的信息作为应答。此命令对回复路径缓冲区,转发路径缓冲区和邮件
内容缓冲区没有影响。

  NOOP (NOOP)  
  此命令不影响任何参数和已经发出的命令。它只是说明没有任何操作而不是
说明接收者发送了一个OK应答。此命令对回复路径缓冲区,转发路径缓冲区和邮
件内容缓冲区没有影响。

  QUIT (QUIT)
  此命令指示接收方必须发送OK应答然后关闭传送信道。接收方在接到QUIT命
令并做出响应之前不应该关闭通信信道。发送方在发送QUIT命令和接收到响应之
前也不应该关闭信道。即使出错,也不应该关闭信道。如果连接被提前关闭,接
收方应该象接收到RSET命令一样,取消所有等待的操作,但不恢复原先已经做过
的操作。而发送方应该象接收到暂时错误(4XX)一样假定命令和操作仍在支持
之中。

  TURN (TURN)
  此命令指定接收方要么发送OK应答并改变角色为发送SMTP,要么发送拒绝信
息并保持自己的角色。如果程序A现在是发送SMTP,它发出TURN命令后接收到
OK(250)应答,它就变成了接收SMTP。程序A就进入初始状态,好象通信信道刚
打开一样,这时它发送220准备好服务信号。如果程序B现在是接收SMTP,它发
出TURN命令后接收到OK(250)应答,它就变成了发送SMTP。程序A就进入初始状
态,好象通信信道刚打开一样,这时它准备接收220准备好服务信号。
若要拒绝改变角色,接收方可以发送502应答。
  对于这些命令的顺序有一定的限制。对话的第一个命令必须是HELLO命令,
此命令在此后的会话中也可以使用。如果HELLO命令的参数不可接受,必须由返
回一个501失败应答,同时接收到的SMTP必须保持在与刚才一致的状态下。  
NOOP,HELP,EXPN和VRFY命令可以在会话的任何时候使用。MAIL,SEND,SOML或
SAML命令开始一个邮件操作。一旦开始了以后就要发送RCPT和DATA命令。邮件操
作可以由RSET命令终止。在一个会话中可以有一个或多个操作。
  如果在操作开始参数不可接受,必须返回501失败应答,同时接收到的SMTP
必须保持在与刚才一致的状态下。如果操作中的命令顺序出错,必须返回503失
败应答,同时接收到的SMTP必须保持在与刚才一致的状态下。
会话的最后一个命令必须是QUIT命令。此命令在会话的其它时间不能使用。 (http://www.fanqiang.com)      
 
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
vivo快充属于哪个协议vivo快充属于哪个协议Sep 06, 2022 pm 02:43 PM

vivo快充主要有两个协议:1、“QC 2.0”快充协议,“QC2.0”就是“Quick Charge 2.0”技术,是高通公司发布的快充技术2.0版本,可以输出5V、9V、12V、20V四组电压;2、PD快充协议,是由“USB-IF”组织制定的一种快速充电规范,是目前主流的快充协议之一,可以使目前默认最大功率“5V/2A”的“type-c”接口提高到100W。

pd3.0快充协议最高多少wpd3.0快充协议最高多少wNov 08, 2022 pm 04:04 PM

pd3.0快充协议最高支持“100W”。2015年11月,USB PD快充迎来了大版本更新,进入到了USB PD3.0快充时代;PD3.0协议支持5V3A、9V3A、12V3A、15V3A、20V5A输出,最大功率可以到100W,不仅可以用在手机充电上,还可以用给笔记本或者是显示器供电。

5种工业通讯协议是什么5种工业通讯协议是什么Sep 28, 2022 am 11:52 AM

5种工业通讯协议:1、Modbus协议,是应用于电子控制器上的一种通用语言;2、RS-232协议,是一种串行物理接口标准;3、RS-485协议,是在RS232的基础上发展来的;4、HART协议,是一种用于现场智能仪表和控制室设备之间的通信协议;5、MPI协议,是一个跨语言的通讯协议,用于编写并行计算机。

win10英文版和中文版区别win10英文版和中文版区别Jan 04, 2024 pm 12:49 PM

Win10英文版与中文版的主要差别,就在于语言界面以及预装的应用程序不同。英文版的界面是英文的,预装的应用程序也全是英文的;中文版的界面则是中文的,预装的应用程序也都是用中文来操持的。除了这些,两个版本的功能和操作其实都是一模一样的。win10英文版和中文版区别:1、语言:英文版的Windows10中,英语会作为默认语言出现,而在中文版的Windows10里,中文则被设定为默认语言。这就是说,当我们安装完成之后,用户将会看到系统界面、菜单、对话框、错误提示等都以不同的语言呈现。2、预装应用程序:

qc4+快充协议是什么qc4+快充协议是什么Aug 18, 2022 pm 03:49 PM

QC4+快充协议是USB PD PPS协议和QC3.0/2.0快充协议的综合体,是一种多功能、多协议的快充技术。QC4+充电协议对USB PD3.0(PPS)进行了兼容,同时向下兼容USB PD2.0、QC3.0、QC2.0、BC1.2等协议。支持USB PD、QC4+的首要前提,是两端均有USB-C接口的支持和基于USB-C接口中的CC(配置通道)的电力协商报文。

PHP中的SOAP协议指南PHP中的SOAP协议指南May 20, 2023 pm 07:10 PM

随着互联网技术的不断发展,越来越多的企业级应用需要向其它应用程序提供接口以实现数据和业务的交互。在这种情况下,我们需要一种可靠的协议来传输数据并确保数据的完整性和安全性。SOAP(SimpleObjectAccessProtocol)就是一种基于XML的协议,可用于在Web环境中实现应用之间的通信。而PHP作为一种流行的Web编程语言,

windows10家庭版和家庭中文版的异同点有哪些windows10家庭版和家庭中文版的异同点有哪些Dec 27, 2023 pm 03:29 PM

我们知道win10系统有很多不同的版本,因为面向的用户不同,所以不同的版本之间主要功能也有所差异。除了熟知的家庭版、旗舰版、专业版等等还有很多我们不太熟悉的版本。今天小编就来和大家聊一聊windows10家庭版和家庭中文版的区别。详细内容一起来了解一下吧~希望可以帮助到你。windows10家庭版和家庭中文版的区别在哪一、默认系统语言不同1、windows10家庭版:windows10家庭版的默认系统语言为英文。2、windows10家庭中文版:windows10家庭中文版的默认系统语言为中文简

提供可靠传输的运输层协议是什么提供可靠传输的运输层协议是什么Dec 03, 2020 pm 02:44 PM

提供可靠传输的运输层协议是TCP协议。TCP协议是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。TCP的设计目标是能够动态地适应互联网络的各种特性。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.