转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
smtp使用说明         ★★★★

smtp使用说明

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3709 更新时间:2009/4/23 18:59:23
N和VRFY命令可以在会话的任何时候使用。MAIL,SEND,SOML或SAML命令开始一个邮件操作。一旦开始了以后就要发送RCPT和DATA命令。邮件操作可以由RSET命令终止。在一个会话中可以有一个或多个操作。

如果在操作开始参数不可接受,必须返回501失败应答,同时接收到的SMTP必须保持在与刚才一致的状态下。如果操作中的命令顺序出错,必须返回503失败应答,同时接收到的SMTP必须保持在与刚才一致的状态下。

会话的最后一个命令必须是QUIT命令。此命令在会话的其它时间不能使用。

 

4.1.2. COMMAND语法格式

 

命令是由命令码和其后的参数域组成的。命令码是四个字母组成的,不区别大小写。因为下面的命令的作用是相同的:

MAIL Mail mail MaIl mAIl

这对于引导任何参数值的标记也是适用的,如TO和to就是一样的。命令码和参数由一个或多个空格分开。然而在回复路径和转发路径中的参数是区别大小写的。特别是在一些主机上,"smith"和"Smith"就根本不是一个用户。

参数域由不定长的字符串组成,它由<CRLF>结束,接收方在完全接收到此序列前不会采取任何行动。方括号代表可选的参数域。如果不选择的话,系统选择默认的设置。

下面是SMTP命令: HELO <SP> <domain> <CRLF> MAIL <SP> FROM:<reverse-path> <CRLF>

RCPT <SP> TO:<forward-path> <CRLF>

DATA <CRLF>

RSET <CRLF>

SEND <SP> FROM:<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>

 

上面参数域的格式在下面给BNF的格式给出,其中的"..."代表对于一个域的一次或多次的重复。

 

<reverse-path> ::= <path>

<forward-path> ::= <path>

<path> ::= "<" [ <a-d-l> ":" ] <mailbox> ">"

<a-d-l> ::= <at-domain> | <at-domain> "," <a-d-l>

<at-domain> ::= "@" <domain>

<domain> ::= <element> | <element> "." <domain>

<element> ::= <name> | "#" <number> | "[" <dotnum> "]"

<mailbox> ::= <local-part> "@" <domain>

<local-part> ::= <dot-string> | <quoted-string>

<name> ::= <a> <ldh-str> <let-dig>

<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>

<let-dig> ::= <a> | <d>

<let-dig-hyp> ::= <a> | <d> | "-"

<dot-string> ::= <字符串> | <字符串> "." <dot-string>

<字符串> ::= <字符> | <字符> <字符串>

<quoted-string> ::= """ <qtext> """

<qtext> ::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>

<字符> ::= <c> | "\" <x>

<dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>

<number> ::= <d> | <d> <number>

<CRLF> ::= <CR> <LF>

<CR> ::= 回车符(ASCII码13) <LF> ::= (ASCII码10)

<SP> ::= 空格(ASCII码32) <snum> ::=由一个,两个或三个数字组成的介于0-255之间的数字

<a> ::= 所有A-Z的52个大小写英文字母

<c> ::= 128个ASCII字符,但不包括空格和特殊字符

<d> ::= 0-9数字

<q> ::=不包括<CR>,<LF>,"或\的128个ASCII字符

<x> ::=所有128个ASCII字符

<special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "." | "," | ";" | ":" | "@" """ 或控制字符

 

注意: "\"是一个转意字符,它表示在其后的字符代表另外的意义。例如"Joe\,Smith"用于表示单独一个由逗号分隔的用户名。主机通常由转化为地址的名称代表。注意:域的名称元素是正式的名称,不能够使用昵称或假名。

有时候名称的转变机制可能不知道主机,这就造成了通信的阻塞。为了解决这个问题,可以采取两种方法:一种方法是:在"#"后加入一个十进制数表示主机地址;另一种方法是在其后加入32位的IP地址,IP地址的形式是由句号分隔的四个介于0-255之间的十进制数。时间戳行和返回路径行的格式通常由下面定义:

 

<return-path-line> ::= "Return-Path:" <SP><reverse-path><CRLF>

<time-stamp-line> ::= "Received:" <SP> <stamp> <CRLF>

<stamp> ::= <from-domain> <by-domain> <opt-info> ";" <daytime>

<from-domain> ::= "FROM" <SP> <域> <SP>

<by-domain> ::= "BY" <SP> <域> <SP>

<opt-info> ::= [<via>] [<with>] [<id>] [<for>]

<via> ::= "VIA" <SP> <连接> <SP>

<with> ::= "WITH" <SP> <协议> <SP>

<id> ::= "ID" <SP> <字符串> <SP>

<for> ::= "FOR" <SP> <路径> <SP>

<连接> ::= 在网络信息中心注册的连接的标准名称

<协议> ::= 在网络中心注册的协议的名称

<daytime> ::= <SP> <日期> <SP> <时间>

<日期> ::= <日> <SP> <月> <SP> <年>

<时间> ::= <小时> ":" <分> ":" <秒> <SP> <时区>

<dd> ::= 由一个或两个数字组成的每月1-31日

<月> ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" | "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"

<年> ::= 由两位数字表示本世界的年代00-99

<小时> ::= 每天的24小时,由0到24

<分> ::= 每小时的分钟数0-59

<秒> ::= 每分钟的秒数0-59

<时区> ::= 全球标准时区

 

-------------------------------------------------------------

返回路径例子

Return-Path: <@CHARLIE.ARPA,@BAKER.ARPA:JOE@ABLE.ARPA>

-------------------------------------------------------------

 

-------------------------------------------------------------

时间戳行例子

Received: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59 PDT

 

Received: from ABC.ARPA by XYZ.ARPA via TELENET with X25

id M12345 for Smith@PDQ.ARPA ; 22 OCT 81 09:23:59 PDT

-------------------------------------------------------------

 

4.2. SMTP响应

对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。

SMTP响应由三位数字组成,其后跟一些文本。数字帮助决定下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。在附录E中可以看到全部的响应码。正规的情况下,响应由下面序列构成:三位的数字,<SP>,一行文本和一个<CRLF>,或者也可以是一个多行响应。只有EXPN和HELP命令可以导致多行应答,然而,对所有命令,多行响应都是允许的。

 

4.2.1. REPLY CODES BY FUNCTION GROUPS 500 格式错误,命令不可识别(此错误也包括命令行过长)

501 参数格式错误

502 命令不可实现

503 错误的命令序列

504 命令参数不可实现

211 系统状态或系统帮助响应

214 帮助信息

220 <domain> 服务就绪

221 <domain> 服务关闭传输信道

421 <domain> 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)

250 要求的邮件操作完成

251 用户非本地,将转发向<forward-path>

450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)

550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

451 放弃要求的操作;处理过程中出错

551 用户非本地,请尝试<forward-path>

452 系统存储不足,要求的操作未执行

552 过量的存储分配,要求的操作未执行

553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)

354 开始邮件输入,以<CRLF>.<CRLF>结束

554 操作失败

 

4.3. 命令和应答序列

发送者和接收者之间的通信是一问一答的交替对话形式,由发送者控制。这样,发送发出一条命令,接收者发出一个响应。接收者在发送下一条指令前必须等应答。一个重要的应答是连接应答。在连接完成时,接收者通常会发送220“服务就绪”。发送者在继续发送指令前会等待此应答。注意:每个连接应答必须拥有服务主机的正式名称作为第一部分,其后跟响应码。例如:

 

220 <SP> USC-ISIF.ARPA <SP> Service ready <CRLF>

 

下面列出了成功和失败应答,这些应答必须遵守严格的次序,接收者可以不理会应答中的文本,但是由数字指定的意义和操作和命令应答序列不能更改。命令响应序列:

每个命令列出了它可能的应答。使用在可能应答前的前缀“P”表示预备的(未用在SMTP中),“I”表示中间的,“S”表示成功,“F”表示失败,“E”表示错误。如果STMP接收者必须关闭信道,可以对任何命令作出421(服务不可用,关闭传输信道)响应。此表基于下面要讲述的状态图:

 

CONNECTION ESTABLISHMENT(建立连接)

S: 220

F: 421

HELO

S: 250

E: 500, 501, 504, 421

MAIL

S: 250

F: 552, 451, 452

E: 500, 501, 421

RCPT S: 250, 251 F: 550, 551, 552, 553, 450, 451, 452 E: 500, 501, 503, 421

DATA

I: 354 -> data -> S: 250

F: 552, 554, 451, 452

F: 451, 554

E: 500, 501, 503, 421

RSET

S: 250

E: 500, 501, 504, 421

SEND

S: 250

F: 552, 451, 452

E: 500, 501, 502, 421

SOML

S: 250

F: 552, 451, 452

E: 500, 501, 502, 421

SAML

S: 250

F: 552, 451, 452

E: 500, 501, 502, 421

VRFY

S: 250,

上一页  [1] [2] [3] [4] [5] [6]  下一页


[Web开发]动易SiteWeaver版自定义采集标签使用说明  [Delphi程序]TeamSource使用说明
[网页制作]Fireworks插件—Transform使用说明  [Web开发]ShadowStar CodeFast 使用说明
[MySql]Linux平台C++类库tinycxx使用说明  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台