版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机网络编程技术第8章Email效劳程序设计3/14/20241Email的使用分析Email的广泛应用:信息交换;工程管理;……Email引入的问题?垃圾邮件;引入病毒……3/14/20242本章的主要内容Email系统的工作原理SMTP协议编程POP3协议编程利用SmtpMail类发送Email利用JMail类收发Email3/14/202438.1Email系统的工作原理(1)工作原理3/14/20244(2)相关的协议RFC822:定义了SMTP、POP3、IMAP以及其他Email传输协议所提交和传输的内容。SMTP:简单邮件传输协议;POP3:邮局协议第3版;IMAP4:网际消息访问协议;MIME:多用途Internet邮件扩展3/14/202458.2SMTP协议编程(1)SMTP的指令与响应码命令语法命令描述HELOHELO<domain><CRLF>向服务器表示用户身份。如果成功,服务器会返回代码250MAILMAILFROM:<E-mailaddress><CRLF>初始化邮件传输。如果成功,服务器会返回代码250RCPTRCPTTO:<E-mailaddress><CRLF>标识单个邮件接收人。多个接收人将由多个该命令指定。如果成功,服务器会返回代码250DATADATA<CRLF>用于设置邮件的主题、接收人、抄送列表和邮件的正文。DATA命令会初始化数据传输,一般在一个或多个RCPT命令后执行DATA命令RSETRSET<CRLF>中止邮件发送处理NOOPNOOP<CRLF>令邮件服务器发送250信息SENDSEND<CRLF>处理邮件发送QUITQUIT<CRLF>结束会话,退出SMTP服务器并中断连接。如果成功,会返回221,表示服务器关闭3/14/20246(2)SMTP响应码响应码含义响应码含义211响应系统状态500未定义的系统指令220服务器的邮件服务已准备启动501系统指令的参数错误221已结束与邮件服务器的连接502系统指令未被执行250系统指令正确发送(OK)503系统指令顺序错误251无此收件人504系统指令的参数未被执行354开始邮件内容发送,并以<CRLF>.<CRLF>表示结束550邮件信箱不存在421服务器无此邮件服务551无此收件人450邮件信箱不存在552系统容量不足451系统指令处理错误553邮件信箱收件人名称不存在452系统容量不足554邮件发送处理失败3/14/20247(3)Email的组成信封MAILFROM:<发信人的EMAL地址>;RCPTTO:<收信人的E-mail地址>。首部,常用的字段格式有:FROM:<姓名><E-mail地址>;TO:<姓名><E-mail地址>;SUBJECT:<E-mail标题>;DATE:<时间>;REPLY-TO:<E-mail地址>;Content-Type:<E-mail类型>;X-Priority:<E-mail优先级>;MIME-Version:<版本>。
首部以一个空行结束。
正文:是E-mail的内容,以“.”表示结束。
3/14/20248(4)ESMTP的工作流程主要包含4个阶段:建立连接传送信封传送数据断开连接3/14/20249(5)ESMTP协议编程实例Email发送界面设计包含了效劳器对用户信息的验证过程。3/14/202410主要代码说明//建立与SMTP效劳器的连接smtpSrv=newTcpClient(tBSrv.Text,25);//获取一个网络流对象,以便通过网络连接来发送和接收数据netStrm=smtpSrv.GetStream();//生成一个StreamReader对象,用于从流中读取数据StreamReaderrdStrm=newStreamReader(smtpSrv.GetStream());//向效劳器发送EHLOLocal,请求建立连接WriteStream("EHLOLocal");//读取效劳器返回的信息,并写入信息列表中listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//向效劳器发送AUTHLOGIN,请求认证WriteStream("AUTHLOGIN");listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;data=tBUser.Text;//转换为Base64编码格式data=AuthStream(data);//向效劳器发送用户名WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;data=tBpwd.Text;3/14/202411主要代码说明〔续〕//转换密码为Base64编码格式,且传送给效劳器data=AuthStream(data);WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//开始发送E-mail的信封//发信人的E-mail地址data="MAILFROM:<"+tBSend.Text+">";WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//收信人的E-mail地址data="RCPTTO:<"+tBRev.Text+">";WriteStream(data);listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;//开始发送数据listBoxMsg.Items.Add(rdStrm.ReadLine());pb1.Value++;3/14/202412主要代码说明〔续〕//开始发送邮件的首部信息data="Date:"+DateTime.Now;//发送日期WriteStream(data);pb1.Value++;//发送邮件发送者信息data="From:"+tBSend.Text;WriteStream(data);pb1.Value++;//发送邮件接收者信息data="TO:"+tBRev.Text;WriteStream(data);pb1.Value++;//发送邮件的主题data="SUBJECT:"+tBSubject.Text;WriteStream(data);pb1.Value++;//发送回复地址data="Reply-TO:"+tBSend.Text;WriteStream(data);pb1.Value++;//发送一个空行,表示首部结束,开始正文发送WriteStream("");pb1.Value++;3/14/202413主要代码说明〔续〕//发送邮件正文WriteStream(tBMailText.Text);pb1.Value++;//发送".",表示邮件内容结束WriteStream(".");pb1.Value++;listBoxMsg.Items.Add(rdStrm.ReadLine());//发送断开连接命令WriteStream("QUIT");pb1.Value++;listBoxMsg.Items.Add(rdStrm.ReadLine());netStrm.Close();rdStrm.Close();pb1.Visible=false;labelp.Visible=false;MessageBox.Show("邮件发送成功!","成功");3/14/2024148.3POP3协议编程(1)POP3协议的工作流程3/14/202415(2)主要的POP3指令信息命令语法命令描述服务器返回信息示例USERUSER<loginname>将客户的用户名发送到服务器。成功后,服务器返回+OK正确的用户名+OK<loginname>iswelcomeonthisserverPASSPASS<password>将客户的密码发送给服务器。成功后,服务器返回+OK正确的用户信息+OK<loginname>loggedinat23:15QUITQUIT关闭与服务器的连接+OKSTATSTAT从服务器中读取邮件总数和总字节数+OK13450LISTLIST<mail#>从服务器中获取邮件列表和大小+OK2messages(350octets)200150RETRRETR<mail#>从服务器中获得一份邮件+OK220octets<服务器发送邮件1内容>.DELEDELE<mail#>服务器将邮件标记为删除,当执行QUIT命令时才真正删除+OK1Deleted.(1为邮件号)3/14/202416(3)POP3协议编程接收程序界面P204--2083/14/2024178.4利用SmtpMail类发送Email微软公司在.NET中提供了SmtpMail类,能够简化E-mail发送程序设计。该类属于命名空间。使用时,需要引用System.Web组件,即。3/14/2024188.4利用SmtpMail类发送Email命名空间包括3个类:MailMessageMailAttachmentSmtpMail以及3个枚举类型:MailPriorityMailFormatMailEncoding3/14/202419(1)应用例如:using;…mailMsg=newMailMessage();mailMsg.From="zzz@126";mailMsg.To="xxx@163";mailMsg.Cc="mmm@126";3/14/202420(2)处理Email信息下面举例说明发送HTML格式的邮件内容:using;…mailMsg;stringmailBody="";mailBody="<HTML><BODY>";mailBody=mailBody&"<P><FONTCOLOR=""#FF0000"">";mailBody=mailBody&"ThisisaHTMLformate-mail.";mailBody=mailBody&"</Font></P>";mailBody=mailBody&</BODY></HTML>";mailMsg.BodyFormat=MailFormat.Html;mailMsg.Body=mailBody;3/14/202421(3)处理Email附件using;…mailAttach;mailAttach=newMailAttachment("E:\tempMail.txt");或者mailAttach=newMailAttachment("E:\tempMail.txt",MailEncoding.UUEncode);mailMsg.Attachments.Add(mailAttach);假设有几个附件,那么依次用Attachment的Add方法将MailAttachment类所设置的附件参加Attachments属性中,如:mailAttach=newMailAttachment("E:\tempMail1.txt");mailMsg.Attachments.Add(mailAttach);mailAttach=newMailAttachment("E:\tempMail2.txt");mailMsg.Attachments.Add(mailAttach);…3/14/202422(4)Email发送方法mailMsg=newMailMessage();mailMsg.From="zzz@126";mailMsg.To="xxx@163";mailMsg.Subject="E-mail通知";mailMsg.Body="E-mail正文";mailMsg.Priority=MailPriority.High;SmtpMail.Send(mailMsg);或者,SmtpMail.Send("zzz@126","xxx@163","E-mail通知","E-mail正文");3/14/2024238.5利用JMail类收发EmailJMail是Dimac公司〔〕推出的一种效劳器端的邮件发送组件,用来发送邮件和编写软件。JMail是一个第三方邮件操作组件,和程序紧密配合来接收及提交邮件到邮件效劳器的控件,让网站拥有发送邮件和接收邮件的功能,可以在ASP、VC、VB、C#、Delphi等开发工具中调用。首先,下载Jmail组件,可以直接安装;也可以找到Jmail.dll,手动注册组件。在命令行环境下,到Jmail.dll所在目录,运行regsvr32Jmail.dll。3/14/202424(1)JMail组件的特点①可以发送附件;②详细日志能力,便于查看问题所在;③设置邮件发送的优先级;④支持多种格式的邮件发送,例如以HTML或者TXT的方式发送邮件;⑤密件发送/〔CC〕抄送/紧急信件发送能力;⑥最关键的就是,这是款免费的组件,所以非常值得使用。JMail4.0以上版本除了具备以上特点外,还有以下优点:①支持需要发信认证的SMTP效劳器,现在多数免费邮箱都需要SMTP发信认证;②当效劳器支持SMTP发信时,JMail可以将信件参加SMTP发信队列,因而速度很快;③支持在HTML邮件中嵌入附件中的图片;④支持POP3收信,便于自行开发邮件的收发软件;⑤支持PGP加密邮件;⑥支持邮件合并,便于群发邮件,且每封信可以不同。3/14/202425JMail组件的主要参数与使用方法应用例如:P214—2173/14/202426(2)基于JMail的Email发送usingjmail;jmail.Messagejmessage=newjmail.MessageClass();jmessage.Charset="GB2312";jmessage.From="";jmessage.FromName="ZhangXiaoming";jmessage.ReplyTo="xxx@163";jmessage.Subject="testE-mailfromjmessage";jmessage.AddRecipient("xxx@163","ZhangXiaoming","123");jmessage.Body="jmail的测试内容";jmessage.MailServerUserName="ZhangXiaoming";jmessage.MailServerPassWord="userpassword";//设置优先级,范围从1~5,越大的优先级越高,3为普通jmessage.Priority=3jmessage.Send("smtp-server",false);MessageBox.Show("E-mail发送成功!");jmess
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同模板对公账号
- 定制产品生产与销售代理合同(二零二四年度)
- 设备机械采购合同
- 国旗课件教学
- 工程转让协议书范本
- 合伙协议电子版人合伙开店协议书合同模板
- 《中医诊断学闻诊》课件
- 课件的设计与制作技巧
- 《建筑基础楼梯》课件
- 音乐课件下载
- 智能治理:提高政府决策的准确性和效率
- 2024年滴眼剂市场份额分析:全球滴眼剂市场销售额达到了4.89亿美元
- 学术规范与论文写作智慧树知到答案2024年浙江工业大学
- 2024年典型事故案例警示教育手册15例
- 软件工程实验报告_学生成绩管理系统
- 九年义务教育全日制小学音乐教学器材配备目录
- MSDS(10-100048)聚脂烤漆
- 船舶风险辩识、评估及管控须知
- 减资专项审计报告
- 投标流程及管理制度
- 章质谱法剖析PPT课件
评论
0/150
提交评论