Jel*_*ena 21 email smtp protocols
发送电子邮件时,通过RCTP TO:命令在SMTP对话期间提供收件人列表.稍后,在DATA命令中,指示诸如"To","Cc","bcc"的标题字段.此RCPT TO收件人列表是否必须与DATA命令中指示的标头匹配?
此外,如果收件人未在RCPT TO中指示,但在电子邮件标题的"收件人"字段中,是否将在不在RCPT TO中的情况下发送给收件人?
sil*_*ser 19
不,他们没有必要匹配.发送邮件时,SMTP服务器(也称为邮件传输代理或MTA)正在创建一个所谓的SMTP信封,其中包含邮件的收件人和发件人(请参阅RFC5321):
SMTP传输邮件对象.邮件对象包含信封和内容.SMTP信封作为一系列SMTP协议单元发送(在第3节中描述).它由发起者地址(应向其指示错误报告),一个或多个收件人地址以及可选的协议扩展材料组成.
事实上,RCPT TO:Command通常有更多的接收者,消息的标题 - 一个常见的情况是使用"盲目副本"bcc :(见RFC5321):
出于多种原因,未出现在邮件头部分中的地址可能会出现在SMTP服务器的RCPT命令中.最常见的两个问题是使用邮件地址作为"列表分析器"(一个解析为多个地址的地址)和"盲目复制"的外观.
此RCPT TO收件人列表是否必须与DATA命令中指示的标头匹配?
不.
如果收件人未在RCPT TO中指示,但在电子邮件标题的"收件人"字段中,是否将在不在RCPT TO中的情况下发送给收件人?
RCPT.这是我自己的SMTP客户端的一个(修改过的)脚本,我会按照你的要求做:
CLIENT: MAIL FROM:<myaccount@gmail.com>
SERVER: 250 2.1.0 OK
CLIENT: RCPT TO:<myaccount@gmail.com>
SERVER: 250 2.1.5 OK
CLIENT: DATA
SERVER: 354 Go ahead
CLIENT: Subject: Test email
CLIENT: From:'John Doe'<fakeaccount@gmail.com>
CLIENT: To:'John Doe'<fakeaccount@gmail.com>
CLIENT: This is a test...
CLIENT: .
Run Code Online (Sandbox Code Playgroud)
消息已成功发送到"myaccount@gmail.com".
SMTP协议(RFC 2821)声明如下:
当使用RFC 822格式[7,32]时,邮件数据包括
备注标题项,例如Date,Subject,To,Cc,From.服务器SMTP
系统不应该根据
RFC 822或MIME [12]邮件头或邮件正文中的感知缺陷拒绝邮件.
还有这个:
DATA命令只能在协议交换中的两个点失败:
- 如果没有MAIL,或者没有RCPT,命令或所有这些命令被拒绝,则服务器可以响应于DATA命令返回"无序命令"(503)或"无有效接收者"(554)应答.如果收到其中一个回复(或任何其他5yz回复),客户端不得发送消息数据; 更一般地说,除非收到354回复,否则不得发送消息数据.
从这些语句中,标题和RCPT TO:命令内容不必匹配(尽管它们应该匹配),并且不使用RCPT TO:可能导致错误以防止继续使用DATA命令.
| 归档时间: |
|
| 查看次数: |
23839 次 |
| 最近记录: |