版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LOGO第3章 电子邮件的发送和接收第3章 电子邮件的发送和接收 随着互联网的普及,电子邮件已经成为人们日常工作、生活中必不可少的通讯工具。本章主要介绍如何利用SMTP与POP3协议实现邮件的发送和接收。 3.1 通过应用程序发送电子邮件 不论是Windows应用程序还是Web应用程序,实现电子邮件的收发都是常用的功能,比如要求用户以邮件方式提供反馈信息;在办公系统中定时检测用户指定的邮件,并及时提醒用户查看等。 3.1.1 SMTP协议 电子邮件是通过SMTP服务器进行发送的,SMTP是英文Simple Mail Transfer Protocol的缩写,意为简单邮件传输协议,默认端口为25
2、。使用SMTP协议发送邮件时,有两种形式,一种是不使用客户端认证,即客户端可以使用匿名方式发送邮件,这种方式即是一般的SMTP协议;另一种要求客户端必须提供用户名密码,这种方式称为ESMTP协议,即Extended SMTP,或者叫扩展SMTP。ESMTP与SMTP的区别除了是否需要认证以外,其他均相同。 客户端发送电子邮件过程是:先通过客户端软件将邮件发送到SMTP邮件服务器,然后再由SMTP邮件服务器发送到目标SMTP邮件服务器。 为了避免或者减少垃圾邮件,目前大部分SMTP邮件服务器一般均采用用户名密码认证的方式。 在SMTP协议中,电子邮件由三部分组成,信封、首部和正文。 1) 信封:
3、信封包括发信人的邮件地址和接收人的邮件地址,用两条SMTP命令指明。 MAIL FROM:,告诉SMTP服务器发信人的地址。 RCPT TO:,告诉SMTP服务器收信人的地址。2) 首部 首部中常用命令: FROM:,表明邮件发送者是谁。 TO:,表明邮件接收者是谁。 SUBJECT:,表明邮件的主题。 DATE:,表明发邮件的时间。 REPLY-TO:,表明邮件的回复地址。 Content-Type:,表明邮件包含文本、HTML超文本和附件的哪些类型。 X-Priority:,表明邮件的发送优先级。 MIME-Version:,MIME的意思是Multipurpose Internet Ma
4、il Extensions,即多用途Internet邮件扩展标准,它对传输内容的消息、附件及其他的内容定义了格式。 3) 正文:正文是邮件的内容。首部以一个空行结束,再下面就是正文部分。 4) 结束符号:邮件以“.”结束。3.1.2 发送邮件 从SMTP协议的介绍可以看出,发送和接收邮件的内部实现过程还是比较复杂的,如果全部从底层进行编程,需要的代码就比较多。因此在.NET框架2.0的System.Net.Mail命名空间中提供了专门对邮件进行处理的类,从而使邮件的发送变得非常简单。 对于运行在没有专用邮件服务器的大多数客户程序而言,向SMTP服务器发送邮件需要提供用户名和密码,服务器验证成功
5、后,才能进行发送或接收。因此在应用程序中发送邮件,需要使用下面几个类: 1) System.Net命名空间下的NetworkCredential类 该类用于提供客户端身份验证机制的凭据。其中包括标准Internet身份验证方法(基本、简要、协商、NTLM和Kerberos身份验证)以及可以创建的自定义方法。在邮件发送中,我们需要使用这个类提供SMTP服务器需要的用户名和密码,用法为: NetworkCredential myCredentials = new NetworkCredential(发件人邮件地址, 密码); 2) System.Net.Mail命名空间下的MailAddress类
6、 该类用于提供发件人和收件人的邮件地址,常用形式为: MailAddress from = new MailAddress(发件人邮件地址); MailAddress to = new MailAddress(收件人邮件地址); 3) System.Net.Mail命名空间下的MailMessage类 该类用于提供邮件的信息,包括主题、内容、附件、信息类型等,常用属性如下:n Attachments 该属性用于指定随电子邮件一起传送的附件集合n Bcc 该属性用于获取或设置以分号分隔的电子邮件地址列表,这些地址接受电子邮件的匿名副本(BCC)n Body 该属性用于获取或设置电子邮件的正文n
7、BodyEncoding 该属性用于获取或设置电子邮件正文的编码类型n BodyEncoding 该属性用于获取或设置电子邮件正文的编码类型n BodyFormat 该属性用于获取或设置电子邮件正文的内容类型n Cc 该属性用于获取或设置以分号分隔的电子邮件地址列表,这些地址接受电子邮件的抄送副本(CC)n From 该属性用于获取或设置发件人的电子邮件地址n Headers 该属性用于指定随电子邮件一起传输的自定义标头n Priority 该属性用于获取或设置电子邮件的优先级n Subject 该属性用于获取或设置电子邮件的主题行n To 该属性用于获取或设置以分号分隔的收件人电子邮件地址列
8、表n UrlContentBase 该属性用于获取或设置Content-Base HTTP标头,即在HTML编码的电子邮件正文中使用的所有相对URL的URL基n UrlContentLocation 该属性用于获取或设置电子邮件的Content常用形式为:MailMessage message = new MailMessage(from, to);message.Subject = 主题;message.SubjectEncoding =System.Text.Encoding.UTF8;message.Headers.Add(“Date”, DateTime.Now.Tostring();
9、message.Priority=MailProio rity.High;message.Body = 邮件内容;message.BodyEncoding = System.Text.Encoding.UTF8;4) System.Net.Mail命名空间下的Attachment类 该类用于提供附件对象,常用形式为: Attachment attachFile = new Attachment(文件名); message.Attachments.Add(attachFile);5) SmtpClient类 该类用于发送邮件,常用形式为: SmtpClient client = new Smtp
10、Client(邮件服务器地址); client.Send(message);方法说明SmtpClient()使用配置文件设置初始化SmtpClient类的新实例。SmtpClient(String)初始化SmtpClient类的新实例,让其使用指定的SMTP服务器发送电子邮件。SmtpClient(String, Int32)初始化SmtpClient类的新实例,让其使用指定的SMTP服务器和端口发送电子邮件。 【例1】设计一个Windows应用程序,实现发送邮件的功能。要求利用正则表达式验证用户输入的信息,当输入信息符合要求时,才允许将邮件发送到邮件服务器。3.2 利用同步TCP接收电子邮件
11、 与发送电子邮件不同,接收电子邮件主要是利用POP(Post Office Protocol)协议,现在常用的是第三版,简称为POP3,默认端口为110。通过POP3协议,客户机登录到服务器后,可以对自己的邮件进行删除或下载,下载后,电子邮件客户端软件就可以在本地对邮件进行处理,随Windows操作系统一块安装的Outlook Express就是这种工作方式。 实际上,收发邮件使用了两种协议,一种是TCP协议,用于收发数据;另一种是POP3协议,用于解析传送的命令。3.2.1 POP3工作原理 凡是提供邮件服务的系统,除了有SMTP服务器外,还有POP3服务器。这两个服务器可能是同一台计算机,
12、也可能是两台计算机。 POP3邮件服务器通过侦听TCP端口110提供POP3服务。客户端软件读取邮件之前,需要事先与服务器建立TCP连接。连接成功后,POP3服务器会向该客户端发送确认消息。然后客户端根据服务器回送的信息决定下一步的操作。 客户端每次向POP3服务器发送命令后,都要等待服务器响应,并处理接收的信息,然后再接着发送下一个命令,如此往复多次,一直持续到连接终止。这个过程经历了三个状态:授权(AUTHORIZATION)状态、操作(TRANSACTION)状态和更新(UPDATE)状态。 在POP3协议中,规定的命令只有十几条。每条命令均由命令和参数两大部分组成,而且每条命令都以回车
13、换行结束。命令和参数之间由空格间隔。命令部分由三到四个字母组成,参数部分可达40个字符长度。 POP3服务器回送的响应信息由一个状态码和一个可能跟有附加信息的命令组成。所有响应也以回车换行结束。状态码有两种:“确定”(“+OK”)和“失败”(“-ERR”)。对于客户端发送的每一条命令,服务器都会回送状态码。因此在客户端程序中,可以通过服务器回送的状态码对应的字符,即判断第一个字符是“+”号还是“-”号来确定服务器是否正确响应客户端发送的命令。 1. 授权状态 客户端首先与POP3服务器建立TCP连接,服务器接收后发送一个单行的确认信息。例如“+OK POP3 server ready”,此时P
14、OP3会话就进入了授权状态。在授权状态,客户需要向服务器发送用户名和密码进行确认。 假设用C表示客户端(Client),S表示服务器端(Server),下面是客户端接收邮件前需要与服务器传输的信息。 1) 发送用户名。 语法形式:USER 功能:将客户的用户名发送到服务器。 服务器返回:+OK正确的用户名;-ERR错误的用户名。 示例:C:USER S:+OK welcome on this server. 上述两行代码的含义为:客户端发送“USER ”,服务器端回送信息“+OK welcome on this server.”。 2) 用户名确认成功后,需要输入密码。 语法形式:PASS 功
15、能:将客户的密码发送给服务器。 服务器返回:+OK正确的用户名;-OK错误的用户名。 示例:C:PASS * S:+OK myname logged in at 19:04 授权成功后,进入操作状态。2. 操作状态 客户端向服务器成功确认了自己的身份后,POP3会话将进入操作状态,客户就可以执行POP3命令进行相应的操作。对于每个命令,服务器都会返回应答信息。下面是在操作状态中使用的命令。 (1) STAT命令 语法形式:STAT 功能:从服务器中获取邮件总数和总字节数。 服务器返回:邮件总数和总字节数。 示例:C:STAT S:+OK 2 320 (2) LIST命令 语法形式:LIST 功
16、能:从服务中获得邮件列表和大小。 服务器返回:列出邮件列表和大小。 示例:C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 200 S: . (3) RETR命令 语法形式:RETR 功能:从服务器中获得一个邮件。 服务器返回:+OK成功;-ERR错误。 示例:C: RETR 1 S:+OK 120 octets S: S: . 注意,这里的“.”是单独发送的。 (4) DELE命令 语法形式:DELE 功能:服务器将邮件标记为删除,当执行QUIT命令时才真正删除。 服务器返回:+OK成功;-ERR错误。 示例:C:DELE 1 S:+OK 1 Deleted 当客户发送QUIT命令时,会话进入更新状态。3. 更新状态 当客户在操作状态下发送QUIT命令后,会话进入更新状态。 QUIT命令 语法形式:QU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17737.124-2026同轴通信电缆第1-124部分:电气试验方法漏泄电缆的耦合损耗试验
- T/ZGM 008-2025绿色产品评价 201×7凝胶型强碱性苯乙烯系阴离子交换树脂
- T/HNCAA 069-2025公路桥梁结构健康监测技术应用规程
- T/CIQA 67-2023“三同”产品 家用和类似用途电动洗衣机技术要求
- T/CAPSA 11202-2024生产安全事故应急响应标准文献元数据导则
- T/CSBME 090-2025车载医用X射线计算机体层摄影设备临床放射防护要求
- 2025~2026学年广东省河源市东源县人教版五年级上册数册中作业题【附答案】
- 2026学年湖南省醴陵市五年级语文期末提升竞赛挑战题(详细参考解析)详细答案和解析
- 2026学年云南省楚雄市五年级语文期末高分难点突破题(详细参考解析)详细答案和解析
- PHP初级面试题及详细答案(真实企业版)
- 2026国考行测真题及参考答案
- 智造未来-2026年智能建造技术与施工机器人应用全景
- 2026中国放射性废水处理用陶瓷超滤膜辐照稳定性加速测试报告
- T/TMAC 248-2025连续石墨化炉能源消耗限额
- 2026秋统编版(新教材)七年级道德与法治上册易错知识点梳理+分课填空自测练习题及答案
- 四上2-3《呼吸的变化》教学课件
- 2026年中盐榆林盐化有限公司秋季招聘笔试模拟试题及答案详解
- 2025年信息安全工程师考试真题及答案解析
- 2026年压力容器考试题库及答案
- BJS 202602 食品中伐地那非杂质30的测定
- 2026年广东省中考物理试卷附答案
评论
0/150
提交评论