SMTP协议详细解释以及C#范例(一)

一> SMTP设计模型:

二>协议详细交互过程解释:
1.SMTP是工作在如下两种情况:
->电子邮件从客户机传输到服务器;
=>是从某一个MDA到另一个MDA或者服务器。
2.SMTP是个Request/Response协议,命令和响应都是基于ASCII文本,并以CR和LF(/r/n)符结束,响应包括一个表示返回状态的三位数字代码.
Request标准格式: Command [Parameter] CRLF
Response标准格式: Code description CRLF
3.SMTP在TCP协议25号端口(默认端口,可以更改)监听连接请求.
4.连接和发送过程:
a.建立TCP连接.
b.客户端发送EHLO命令以标识发件人自己的身份.
c.对于需要验证的服务器接下来需要发送AUTH LOGIN开始验证过程,接下来分2次以BASE64编码来发送用户名以及密码(按照行格式发送);
d.然后客户端发送MAIL FROM命令服务器端希望以OK作为响应,表明准备接收.
e.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行服务器端则表示是否愿意为收件人接受邮件.
f.协商结束,发送邮件,用命令DATA发送.
g.对邮件内容进行编码,具体的编码格式如下:
MIME-Version:1.0\r\n
From:<fromEmailAddress>\r\n
To:<toEmailAddress>\r\n
Subject:xx\r\n
Date:xxxx\r\n
Content-Type: text/plain;charset="us-ascii"\r\n
Content-Transfer-Encoding: 7bit\r\n\r\n
<email body>\r\n\r\n
g.以.表示结束输入内容一起发送出去.<CRLF.CRLF>标识邮件体的结束。
h.结束此次发送,用QUIT命令退出.

5.SMTP基本命令集:
命令 描述
------------------------------
EHLO 向服务器标识用户身份发送者能欺骗,说谎,但一般情况下服务器都能检测到。
MAIL 初始化邮件传输
mail from:
RCPT 标识单个的邮件接收人;常在MAIL命令后面
可有多个rcpt to:(所有的cc以及bcc都通过RCPT TO方式累加发送到服务器端)
DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以.结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令.
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用.
HELP 查询服务器支持什么命令.
NOOP 无操作,服务器应响应OK.
QUIT 结束会话.
RSET 重置会话,当前传输被取消
--------------------------------

三>一个详细的SMTP发送全部信息体(注意每行后面都带有CRLF):
-----------------------------------------------------------------
EHLO hostname

220 163.com Anti-spam GT for Coremail System (163com[20101010])

AUTH LOGIN

250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrTlPciUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME

usernameInBase64

334 dXNlcm5hbWU6

PasswordInBase64

334 UGFzc3dvcmQ6

235 Authentication successful

MAIL FROM:<xx@163.com>

250 Mail OK

RCPT TO:<xx@yy.com>

250 Mail OK

DATA

354 End data with <CR><LF>.<CR><LF>

MIME-Version: 1.0
From: <xx@163.com>
To: xx@yy.com
Subject: test subject
Date: Sunday, August 07, 2011 3:17:48 PM
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

aaaaaaaa


.


250 Mail OK queued as smtp3,DdGowKCL1QPVOz5O3+I2AA--.6351S2 1312701398

QUIT

221 Bye
-----------------------------------------------------------------

四>参考链接:
SMTP RFC 5321参考: http://www.networksorcery.com/enp/rfc/rfc5321.txt
Email发送详细例子: http://www.codeproject.com/KB/cs/email_client_application.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值