VC++ SMTP协议电子邮件传送分析C言语教程-C / C++-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝29
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:200回复:0

  VC++ SMTP协议电子邮件传送分析C言语教程

楼主#
更多 发布于:2016-06-02 20:20

前语

电子邮件效劳作为Internet上运用最多和最广的效劳项目得到了十分广泛的运用,在网络运用中也起到十分重要的效果。好像别的的网络效劳,电子邮件体系也有其运用的传输协议,包括SMTP(Simple

Mail Transfer Protocol,简略邮件传输协议)、POP(Post Office Protocol,邮局协议)和IMAP(Internet

Message Access Protocal,音讯拜访协议)等,这些协议运用于电子邮件的发送和接纳。一些邮件处理软件如OutLook

Express和FoxMail等便是依照SMTP和POP3 协议结合Windows

Sockets套接字进行规划来收发邮件的。这篇文章以SMTP协议为研讨目标,在Visual C++

6.0编程环境下依照SMTP协议经过套接字发送SMTP指令,接纳并处理邮件效劳器的反应信息,然后完结对电子邮件的发送。

SMTP协议的通讯模型和会话流程

SMTP协议通讯模型

SMTP协议是TCP/IP协议族中的一员,首要对如何将电子邮件从发送方地址传送到接纳方地址,也便是对传输的规矩做了规则。SMTP协议的通信模型并不杂乱,首要作业会集在发送SMTP和接纳SMTP上:首要对于用户宣布的邮件恳求,由发送SMTP树立一条连接到接纳SMTP的双工通讯链路,这儿的接纳SMTP是相对于发送SMTP而言的,实际上它既可所以终究的接纳者也可所以中心传送者。发送SMTP担任向接纳SMTP发送SMTP指令,而接纳SMTP则担任接纳并反应应对。可大致用下面的通讯模型示意图来表示:

SMTP协议的指令和应对

早年面的通讯模型能够看出SMTP协议在发送SMTP和接纳SMTP之间的会话是靠发送SMTP的

SMTP指令和接纳SMTP反应的应对来完结的。在通讯链路树立后,发送SMTP发送MAIL指令指令邮件发送者,若接纳SMTP此时能够接纳邮件则作出OK的应对,然后发送SMTP继续宣布RCPT指令以承认邮件是不是收到,假如接纳到就作出OK的应对,不然就宣布回绝接纳应对,但这并不会对整个邮件操作形成影响。两边如此反复多次,直至邮件处理完毕。SMTP协议共包括10个SMTP指令,列表如下:

SMTP指令指令阐明HELLO <domain>

<CRLF>辨认发送方到接纳SMTP的一个HELLO指令MAIL FROM:<reverse-path><CRLF>

<reverse-path>为发送者地址。此指令通知接纳方一个新邮件发送的开端,并对一切的状况和缓冲区进行初始化。此指令开端一个邮件传输处理,终究完结将邮件数据传送到一个或多个邮箱中。RCPT

TO:<forward-path><CRLF> <forward-path>标识各个邮件接纳者的地址DATA <CRLF>

接纳SMTP将把这以后的做法看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的完毕。REST

<CRLF>退出/复位当前的邮件传输NOOP <CRLF>请求接纳SMTP仅做OK应对。(用于测验)QUIT

<CRLF>请求接纳SMTP回来一个OK应对并封闭传输。VRFY <string> <CRLF>

验证指定的邮箱是不是存在,因为安全要素,效劳器多制止此指令。EXPN <string> <CRLF>

验证给定的邮箱列表是不是存在,扩大邮箱列表,也常制止运用。HELP <CRLF>查询效劳器支撑啥指令

注:<CRLF>为回车、换行,ASCII码分别为13、10(十进制)。

SMTP协议的每一个指令都会回来一个应对码,应对码的每一个数字都是有特定意义的,如第一位数字为2时表示指令成功;为5表失利;3表没有完结。一些较杂乱的邮件程序利用该特色,首要查看应对码的首数字,并根据其值来决议下一步的动作。下面将SMTP的应对码列表如下:

应对码阐明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 开端邮件输入,以"."完毕554 操作失利

优质IT资源分享社区为你提供此文。

本站有大量优质C、C++教程视频,资料等资源,包含C,C++基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。

C、C++教程视频

优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客