首页 > 编程知识 正文

pop3协议是指,outlook中smtp协议是指

时间:2023-05-05 02:27:41 阅读:149222 作者:940

1 .概要简单邮件传输协议(SMTP )。 邮件服务器可以通过SMTP发送和接收邮件,但是邮件客户端只能通过SMTP发送邮件,为了接收邮件一般使用IMAP或POP3。 邮件客户端使用TCP的25号端口与服务器通信。

SMTP于1982年首次在RFC 821中定义,2008年更新为扩展SMTP协议并添加到文件RFC 5321中。 扩展协议是目前使用最广泛的协议。

2. SMTP模型

SMTP当用户需要发送邮件时,建立用于邮件发送者(sender-SMTP )与邮件收件人进行通信的信道,发送者向收件人发送SMTP命令,当收件人收到命令时回复命令(sender-SMTP )。

通信路径建立后,发送者发送MAIL命令指定发送者的邮件,如果接收者接收到该邮件则返回OK,接下来发送者发送RCPT命令指定接收者的邮箱,如果接收到也同样返回OK,如果没有接收到则拒绝收件人的邮件地址确定后,发送者用DATA指令指示发送数据,用1个.结束发送。 如果收到数据,则接受OK,并使用QUIT结束会话。

3. SMTP步骤这里有三个步骤。 对于mail事务,第一步是在mail命令中提供发件人id,第二步是在一个或多个RCPT命令中提供收件人信息,然后在DATA命令中提供邮件数据。

第一步是MAIL命令,reverse-path包含发件人的邮箱。 (SP是空格,CRLF是换行符)。

名为mailspfrom : reverse-path crlf的命令指示收件人启动新的邮件事务,并重置所有状态表和缓存,包括收件人信息和邮件数据。 reverse-path用于报告错误,如果命令已接受,则返回250 OK

步骤2是RCPT命令

rcpt sp to :向前路径crlf命令提供收件人的邮箱,如果接受,则返回250 OK;否则返回550Failure。 这个步骤2可以重复很多次。

步骤3是DATA命令

如果DATA CRLF被接受,则返回354,认为所有后续行都将发送数据信息邮件。 收到文本结束符后,返回250OK

必须指定邮件数据的末尾,以激活命令和回复对话。 通过发送只包含一个句点的行,促使邮件数据结束。

注:邮件数据(mail data )包含Date、Subject、To、Cc、From等邮件头关键字

以下示例说明这些命令的使用。 s :发送发送,R:reply回复)

s : mail from 3360 Smith @ alpha.arpa

R: 250 OK

s : rcpt to : Jones @ beta.arpa

R: 250 OK

s : rcpt to : green @ beta.arpa

r : 550否such user here

s : rcpt to : brown @ beta.arpa

R: 250 OK

s :数据

r : 354开始邮件输入; end with CRLF.CRLF

s :蓝牙.

S:etc. etc. etc。

S: CRLF.CRLF

R: 250 OK

Jones and Brown可以接收邮件,但Green邮箱无效,无法接收邮件。

4 .打开和关闭传输路径以下两个命令用于打开和关闭传输路径

HELO SP domain CRLF

QUIT CRLF

HELO命令在主机上介绍自己,可以翻译为“Hello,I amdomain”。

5. SMTP命令总结

HELO SP domain CRLF替换冷静的空SP domain /address-literal CRLF新标准HELO命令

mailspfrom : reverse-pathcrlfrcptspto : forward-pathcrlfdatacrlfrsetcrlfsendspfrom 3360 reverse-path crlf

>SOML <SP> FROM:<reverse-path> <CRLF>SAML <SP> FROM:<reverse-path> <CRLF>VRFY <SP> <string> <CRLF>EXPN <SP> <string> <CRLF>HELP [<SP> <string>] <CRLF>NOOP <CRLF>
QUIT <CRLF>TURN <CRLF>

命令语义:

SMTP命令由四个不区分大小写的字母组成,如果命令带参数,则用空格与参数隔开,命令用回车换行结尾<CRLF>。

冷静的天空(Extended hello)or  HELO(hello)
这个命令用于说明自己是SMTP客户端身份,参数包含客户端的域名(domain)。其中冷静的天空是SMTP补充协议( RFC 5321 )中用于替换HELO命令的新命令,协议规定服务器支持冷静的天空命令的时候,尽量使用冷静的天空命令,为了兼容以前的版本,要求服务器继续支持HELO命令。如果收到回复OK,说明发送者和接收者处于初始状态,所有的状态表和缓存区都被清零。MAIL
这个命令的参数是发送者邮箱<reverse-path>,参数中有 FROM 关键字,这个命令会清空之前的发送者邮箱(the reverse-path buffer)、接收者邮箱(forward-path buffer)和邮件数据(the mail data buffer)。RCPT (recipient)
用于指定一个邮件接收者,参数中有TO 关键字,指定多个接收者通过重复使用这个命令。DATA 
这个命令没有参数,告诉服务器接着要发送邮件内容。
邮件内容包含邮件标题项(message header section )和邮件正文(message body),
标题项(Header Fields )是以项目名(field name)为行的起点,接着是冒号(":"),跟着是内容(field body)以回车换行结束(CRLF),下面是标题项的例子
From: Bob@example.com To: bzdyf@example.comCc: theboss@example.com subject: subject 其中From、To、Cc、subject就是项目名,冒号后是内容。邮件的标题区与正文区需要用一个空行隔开。两者共同组成DATA命令的参数,正文区用只有一个点字符“.”的单行来结束。SEND 
初始化邮件事务,邮件数据被转发到一个或多个终端。 SOML(SEND OR MAIL)
初始化邮件事务,邮件数据被转发到一个或多个终端或邮箱。
SAML(SEND AND MAIL)
初始化邮件事务,邮件数据被转发到一个或多个终端和邮箱。
RSET(RESET)
这个命令用来终止邮件事务(mail transaction),任何已经存储的发送者、接收者、邮件数据(mail data)信息都被丢弃,缓存区被清零。VRFY(VERIFY) 
验证邮箱是否存在,如果参数是用户名,则返回一个全名(如果存在)。EXPN(EXPAND) 
验证邮箱列表HELP
返回帮助信息,带参数时候,返回指定的帮助信息。NOOP 
这个命令指示服务器收到命令后不用回复 “OK”QUIT 
关闭传输通道。TURN 
交换邮件发送者和接收者的角色,这个命令用在建立连接成本高的时候,TCP连接不用这个命令。这个命令会产生安全问题,只有在服务器可以被授权作为客户端时候才能用。

6.  新标准rfc5321弃用的命令



这里是c++发邮件类(含附件带注释)
https://blog.csdn.net/sinat_36219858/article/details/80439782
这个是便于理解的函数式编程c++发邮件程序
https://blog.csdn.net/sinat_36219858/article/details/71074776


参考:http://www.cnblogs.com/sdgwc/p/3324368.html



版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。