发送E-MAIL程件序的设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
----------专业最好文档,专业为你服务,急你所急,供你所需------------- 文档下载最佳的地方 ----------专业最好文档,专业为你服务,急你所急,供你所需------------- 文档下载最佳的地方 试验8 发送E-MAIL程序的设计 通过这次试验,要掌握按照支持SMTP认证的SMTP会话过程,发送E-MAIL协议命令的基本原理,其中E-MAIL帐号和密码要用BASE64编码,SMTP服务器可借助ISP提供(如:SMTP.163.com)。 相关内容说明 参考[RFC 2554]规范中定义了SMTP的认证过程[2],但RFC 2554 中没有定义具体的认证参数。SMTP的认证功能主要是增加了AUTH命令,AUTH命令有多种用法,而且有多种认证机制,AUTH支持的认证机制主要有LOGIN,CRAM-MD5等。 LOGIN是大多数免费邮件服务器都支持的,如163,263与新浪都支持。而新浪还支持CRAM-MD5机制。认证机制一般只在真正 发送邮件之前进行,而且只需要执行一次。当认证成功后,即可按原来正常的处理发送邮件。原理是口令-应答(Challenge-Response),即会话的过程是发送文本来完成的,过程为交互式的请求应答模式,每次会话服务器总是返回一定的响应吗,表示客户端的请求是否被正确地应答,会话过程有一定的次序。由服务器发送命令要求客户端回答,客户端根据服务器发送信息进行回答,如果应答通过了,则认证成功,即可继续处理。下面对LOGIN机制作一个简单介绍。S:表示服务器返回,C:表示客户端发送 ,三位数字代码如334为服务器响应码。 LOGIN 口令-应答过程如下: 1 C: AUTH LOGIN 2 S: 334 dXNlcm5hbWU6 3 C: bXlnOTQ= (假设邮箱名为”myg94”) 4 S: 334 cGFzc3dvcmQ6 5 C: MzQ5OTA5Mg== (假设密码为”3499092”) 6 S: 235 Authentication successful. 上述6个步骤的说明如下: 1 为客户端向服务器发送认证指令。 2 服务端返回base64编码串,成功的响应码为334。编码字符串解码后为“username:”,说明要求客户端发送用户名。 3 客户端发送用base64编码的用户名,此处为“myg94”。 4 服务端返回base64编码串,成功响应码为334。编码字符串解码后为“password:”,说明要求客户端发送用户口令。 5 客户端发送用base64编码的口令,此处为“3499092”。 6 成功后,服务端返回码为235,表示认证成功可以发送邮件了。 在SMTP的[RFC 821]中,在与邮件服务器连接成功后,第一个命令一般是“HELO”。但是在支持认证的邮件服务器中,第一个命令应改为“EHLO”。所以这时的SMTP 会话过程应修改如下: 1 C: EHLO 2 S: 250 3 C: AUTH LOGIN 4 S: 334 dXNlcm5hbWU6 5 C: bXlnOTQ= (假设邮箱名为”myg94”) 6 S: 334 cGFzc3dvcmQ6 7 C: MzQ5OTA5Mg== (假设密码为”3499092”) 8 S: 235 Authenticationsuccessful. 9 C: MAIL FROM:netmao94@163.com 10 S: 250 11 C: RCPT TO:MYG94@163.COM 12 S: 250 13 C: DATA 14 S: 354 15 C: QUIT 16 S: 221 S:表示服务器返回,C:表示客户端发送。 参考程序运行界面如下: 参考代码如下: //将ok按钮改成发送按钮,然后发送具体信件 void CSMTPwithAttachDlg::OnOK() { // TODO: Add extra validation here CWaitCursor wc; UpdateData(true); //首先判断SMTP服务器是否为空,如果为空,则设定为默认值 if (m_Server.IsEmpty()) { m_Server=; UpdateData(false); } else { //创建SMTP信息体,通过类来实现 CSMTPMessage* pMessage = CreateMessage(); //连接到服务器 CSMTPConnection connection; //判断是否是自动拨号上网 //if (m_bAutoDial) //con

文档评论(0)

zzabc003 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档