使用C#进行E-Mail的收发操作
2010-03-12 11:59
393 查看
一、目标描述
发送要求:
输入:
1.对方E-Mail地址
2.smtp服务器地址
3.username
4.password
5.邮件正文
6.标题(可选)
发送邮件正文。
接收要求:
输入 :
1.pop3服务器地址
2.username
3.password
检索邮件列表,接收邮件正文。
二、问题描述
1. 如何用C#来发送邮件.
2. 如何用C#来实现基于POP3协议的邮件接收
三、解决方案
1. 邮件的发送
使用System.Net.Mail 命名空间中MailMessage 类和SmtpClient类发送邮件.此方法较简单,不再鳌述.
2. 在邮件接收中
我主要用到了两个类:TcpClient类和NetworkStream类。TcpClient类是运用C#进行网络编程的一个非常重要的类,它提供了通过网络连接、发送和接收数据的简单方法,从而实现了网络编程的大大简化。NetworkStream类实现通过网络套接字发送和接收数据的标准.Net框架流机制,它支持对网络数据流的同步和异步访问,是实现网络通讯的重要组成部分
四、总结
通过此次练习, 在基于POP3协议的邮件接收时的工作流程为:
在客户端连接服务器成功后,服务器会返回以下信息:+OK…… 字符+OK是POP3协议的返回信息。它的回应信息不像SMTP协议那样用丰富多变的数字表示,只有两个:+OK或者-ERR。其中,+OK表示连接成功,而-ERR则表示连接失败。
然后通过在客户端输入USER <用户名> 该命令告诉服务器你的用户名。(注:有些服务器会区分大小写字母的)。 当服务器返回+OK后,在客户端再输入PASS <口令> 服务器返回+OK后,会返回一些邮箱的统计信息,比如:+OK n message(s) [**** byte(s)] 不同的服务器返回的信息格式不太一样,所以我们可以用STAT命令来查看邮箱的情况。STAT命令的回应中有两个数字,分别表示邮件的数量和邮件的大小。 如果信箱里有信,就可以用RETR命令来获取邮件的正文。RETR命令的格式为: RETR <邮件编号> 如果返回结果第一行是+OK信息,则表示成功。第二行起便是邮件的正文。最后一行和SMTP协议一样,是一个单独的英文句号,表示邮件的结尾部分,在读取时使用Reader.ReadLine()来读取,其中Reader为StringReader成员。 如果邮件通过POP3收取后可用DELE命令删除邮箱中的邮件,否则你的邮箱就爆了。DELE命令的格式为: DELE <邮件编号> 如果删错了,可以用RSET命令来恢复所有已被删除的邮件(前提时没有退出系统)。所有操作完成后可通过输入QUIT命令退出POP3服务器了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mengyao/archive/2007/08/16/1746533.aspx
发送要求:
输入:
1.对方E-Mail地址
2.smtp服务器地址
3.username
4.password
5.邮件正文
6.标题(可选)
发送邮件正文。
接收要求:
输入 :
1.pop3服务器地址
2.username
3.password
检索邮件列表,接收邮件正文。
二、问题描述
1. 如何用C#来发送邮件.
2. 如何用C#来实现基于POP3协议的邮件接收
三、解决方案
1. 邮件的发送
使用System.Net.Mail 命名空间中MailMessage 类和SmtpClient类发送邮件.此方法较简单,不再鳌述.
2. 在邮件接收中
我主要用到了两个类:TcpClient类和NetworkStream类。TcpClient类是运用C#进行网络编程的一个非常重要的类,它提供了通过网络连接、发送和接收数据的简单方法,从而实现了网络编程的大大简化。NetworkStream类实现通过网络套接字发送和接收数据的标准.Net框架流机制,它支持对网络数据流的同步和异步访问,是实现网络通讯的重要组成部分
四、总结
通过此次练习, 在基于POP3协议的邮件接收时的工作流程为:
在客户端连接服务器成功后,服务器会返回以下信息:+OK…… 字符+OK是POP3协议的返回信息。它的回应信息不像SMTP协议那样用丰富多变的数字表示,只有两个:+OK或者-ERR。其中,+OK表示连接成功,而-ERR则表示连接失败。
然后通过在客户端输入USER <用户名> 该命令告诉服务器你的用户名。(注:有些服务器会区分大小写字母的)。 当服务器返回+OK后,在客户端再输入PASS <口令> 服务器返回+OK后,会返回一些邮箱的统计信息,比如:+OK n message(s) [**** byte(s)] 不同的服务器返回的信息格式不太一样,所以我们可以用STAT命令来查看邮箱的情况。STAT命令的回应中有两个数字,分别表示邮件的数量和邮件的大小。 如果信箱里有信,就可以用RETR命令来获取邮件的正文。RETR命令的格式为: RETR <邮件编号> 如果返回结果第一行是+OK信息,则表示成功。第二行起便是邮件的正文。最后一行和SMTP协议一样,是一个单独的英文句号,表示邮件的结尾部分,在读取时使用Reader.ReadLine()来读取,其中Reader为StringReader成员。 如果邮件通过POP3收取后可用DELE命令删除邮箱中的邮件,否则你的邮箱就爆了。DELE命令的格式为: DELE <邮件编号> 如果删错了,可以用RSET命令来恢复所有已被删除的邮件(前提时没有退出系统)。所有操作完成后可通过输入QUIT命令退出POP3服务器了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mengyao/archive/2007/08/16/1746533.aspx
相关文章推荐
- 技术文档-使用C#进行E-Mail的收发操作
- C#使用自定义算法对数组进行反转操作的方法
- 【C# MySQL】第一次使用C#对MySQL进行操作的心得
- !!c# 委托与多线程 -- 相比background来说,本方法针对当需要通过异步代理发起UI操作,而后线程中进行sleep操作的时使用
- C#使用XmlDocument操作XML进行查询、增加、修改、删除、保存应用的实例(转载)
- C#使用COM组件接口进行串口操作
- android 使用 websocket 进行长链接的一个简单的 demo,可以用来收发消息或别的操作,里面用到了 autobahn 的 jar 包
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- C#使用DotNetZip对zip压缩包进行添加删除操作
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用C#对XML进行增删改查操作 收藏
- 使用C#和Excel进行报表开发(二)-操作统计图
- C#中使用seriport和单片机进行串口长数据收发不全,解决办法
- C#使用XmlDocument操作XML进行查询、增加、修改、删除、保存应用的实例
- 使用VS(C#) 对Mysql 进行操作
- 使用C#和Excel进行报表开发(二)-操作统计图(Chart)
- 使用微软Kinect进行手势识别操作的一个简单范例(2)(WPF-C#)
- C#使用消息(SendMessage)进行跨进程操作
- unity3D使用C#遍历场景内所有元素进行操作