优秀的毕业设计论文网
计算机 JAVA 电子信息 单片机 机械机电 模具 土木工程 建筑结构 论文
热门搜索词:网络 ASP.NET 汽车 电气 数控 PLC

111_基于cs的电子邮件简单收发系统(C#)

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
  
资料介绍:

3 系统需求分析
3.1 功能需求
作为一个电子邮件客户端,其核心功能是能够发送和接收邮件,其他附加功能如地址薄管理等也是不可少的。
3.1.1 邮件发送需求
主要要求能实现邮件的发送,不仅能实现单个发送而且还能实现群发,同时要求能够发送附件。
3.1.2 邮件接收需求
要求能实现电子邮件的接收,不仅能实现邮件文本的接收而且还能实现附件的接收,同时具有提示发件人,接收日期。
3.1.3 附加功能需求
附件功能主要有地址薄管理,用户能方便地实现对联系人的管理。
3.2 研究思路
根据需求,本系统按照如下几个模块的设计的。
3.2.1 用户注册块
用户只有在注册邮件账号后才能进行其他操作。
3.2.2 邮件发送块
邮件发送块主要实现邮件的发送,包括群发以及附件的发送。
3.2.3 邮件接收块
主要实现邮件文本信息的收取,包括附件的收取,同时具有其他如发件人等信息提示功能。
3.2.4 地址薄管理块
主要是方便用户管理自己的联系人,主要是对联系人的增加,删除等。
4 系统总体功能模块和系统总体流程
4.1 系统总体功能模块
系统的功能模块有账号管理模块、地址薄管理模块、写邮件模块与收邮件模块。 内容来自think58 [资料来源:THINK58.com]

图3 系统功能模块图
4.2 系统流程
当用户打开客户端时,需要注册一个账号进行邮件的收取等操作。

图4 流程图
5 系统功能实现
5.1 新建账号模块
5.1.1 模块功能
用户运行系统时,需要新建一个邮件账号,在这个信件账号的过程中,需要指定SMTP服务器以及SMTP的端口。本模块主要实现邮件账号的注册。
5.1.2 核心实现
1. 网络连接类及实例TcpClient
为TCP网络服务提供客户端连接类TcpClient实例对象tc。TcpClient类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据,而实例化的过程也是连接SMTP服务器的过程。
Privite TcpClient tc;
2. 提供用于网络访问的基础数据流及其实例 NetworkStream
此类提供访问网络的基础数据流的方法。其中最基本也是最重要的两个方法就是Write()和Read()方法。
private NetworkStream ns;
3. 一维字符串数组变量FilePath
此字符串数组主要用来存放用户选择的附件的绝对路径。
private string[] FilePath;
4. 发送接收邮件所需的基本参数
UserName; // 用于调用发送邮件类的用户名
PassWd; // 用于调用发送邮件类的密码 think58 [版权所有:http://think58.com]
MailAddress;// 用于调用发送邮件类发送邮件人地址
AccountName; // 新建的帐户名
SmtpName; // 用于调用发送邮件类的SMTP服务器名
SmtpPort=25;
PopName; // 用于调用接收邮件的pop服务器名
PopPort=110;
5.1.3 运行界面
指定收发邮件的必须参数之后,再回到系统的主界面。

图5 新用户注册
5.2 发送邮件模块
5.2.1 模块功能
在新建账号的过程中已经指定了邮件地址和账号名称,所以默认将以这些参数来发送邮件,通过调用参数的不同程序会自动的调用相对应的代码来执行不同的操作。本模块主要实现邮件的发送,支持文本或html形式发送,同时也支持附件的发送。
5.2.2 核心实现
1. 重载的构造函数 SmtpMail()
此函数主要用于在初始化过程中,把用户选择的附件的路径以参数的形式传给FilePath。
public SmtpMail(ArrayList array)
{ //在重载构造函数的同时,将FilePath初始化
FilePath = new string[array.Count];
Attachments = new System.Collections.ArrayList();
for (int i = 0; i < array.Count; i++)
{
FilePath[i] = array[i].ToString();
} [资料来源:THINK58.com]
if (FilePath != null)
{
AddAttachment(FilePath);
}
}
2. 添加附件的函数AddAttachment
传给FilePath的路径,通过这样一个函数就可以循环的动态的添加到IList接口的一个对象中了,方便以后在具体的实现的过程中的使用。
public void AddAttachment(params string[] FilePath)
{ try
{
if (FilePath == null)
{
throw (new ArgumentNullException("FilePath"));
}
for (int i = 0; i < FilePath.Length; i++)
{
Attachments.Add(FilePath[i]);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
think58 [资料来源:http://THINK58.com]