毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

C#电子邮件客户端软件设计(开题报告+英文文献+答辩PPT) 第15页

更新时间:2010-3-11:  来源:毕业论文
C#电子邮件客户端软件设计(开题报告+英文文献+答辩PPT) 第15页
命名控件MailSend
由于在C Sharp语言中,都是以命名控件来组织程序的。而所有的类都归属于一个特定的命名空间下。需要的命名空间系统本身自带了一部分,而且如果系统没有你需要的命名空间的话,就可以自己编写,本节中的这个命名空间就是由于需要而编写的。而调用某一个类中的某个变量成员的方法就是通过 命名空间名.类名.变量成员 来访问的,当然在C Sharp 中如果在程序开始通过Using 命名空间名,就可以直接的象C++那样来访问成员变量,可以说相当的方便,这些都会在程序中体现出来,再次不再做过多的叙述。
5.1  发送邮件类SmtpMail
5.1.1  主要成员变量说明
1) 网络连接类及实例TcpClient tc
为 TCP 网络服务提供客户端连接类TcpClient实例对象tc。TcpClient 类提供了一些简单的方法,用于在同步阻塞模式下通过网络来连接、发送和接收流数据。而实例化的过程也是连接SMTP服务器的过程。它的重载方法之一的两个参数一个为服务器名称字符串,另一个为服务器的埠。
2)提供用于网络访问的基础数据流及其实例 NetworkStream ns
此类提供访问网络的基础数据流的方法。其中最基本也是最重要的两个方法就是Write()和Read()方法,至于参数不再次赘述。
3)一文字符串数组变量FilePath
此字符串数组主要用来存放用户选择的附件的绝对路径名,并在发送带附件的邮件时用到。
4)发送邮件所需的基本参数
比如用于ESMTP等录检验用的用户名、密码,发送邮件需要的收信人,发信人地址以及主题等等在此不再赘述。
5.1.2  主要成员函数说明
1)重载的构造函数 SmtpMail()
此函数主要用于在初始化过程中,把用户选择的附件的路径以参数的形式传给FilePath。
2)添加附件的函数 AddAttachment
传给FilePath的路径,通过这样一个函数就可以循环的动态的添加到IList接口的一个对象中了,方便以后在具体的实现的过程中的使用。
3)得到上传的附件的文件流 GetStream
由于在网络中的操作都是以网络流的形式来实现的,因此先将上传的附件转换成文件流,然后再用Write的方法把这些附件的文件流写入到网络中,来完成发送附件的操作。具体实现代码如下所示:
private string GetStream(string FilePath)
  {
   //建立文件流对象
 System.IO.FileStream FileStr=new System.IO.FileStream(FilePath,System.IO.FileMode.Open);
  byte[] by=new byte[System.Convert.ToInt32(FileStr.Length)];
  FileStr.Read(by,0,by.Length);
  FileStr.Close();
  return(System.Convert.ToBase64String(by));
  }
4)将字符串编码为Base64字符串的函数 Base64Encode
由于ESMTP的LOGIN认证机制是采用Base64编码,当用户发出AUTHLOGIN的命令后,服务器返回334的应答码等待用户输入。如果身份确认后服务器返回235的应答码,否则返回失败信息。所以要将用户名和密码转换成Base64编码然后再发给服务器。此函数的作用就是把给定的字符串转换成相应的Base64编码的字符串。
5) 发送SMTP命令的函数 SendCommand
这个函数的作用是把SMTP命令的字符串转换成对应的字节型值(C#中规定的Write方法只能写入字节型的数据)然后写入网络中,如果操作成功就返回一个标志为真的布尔型变量,如果操作失败或者发生异常就返回标志为假的布尔型变量。具体代码如下所示:
private bool SendCommand(string str)
  {
   //定义一个数组
   byte[] WriteBuffer;
   //设定一个布尔类型的变量
   bool state=false;
   WriteBuffer = Encoding.Default.GetBytes(str);
   //加入防错机制,可以有效提高程序运行的效率和捕获出错信息
   try
   {
    //向网络中写入数据
    ns.Write(WriteBuffer,0,WriteBuffer.Length);
    state=true;
   }
   catch(Exception ex)
   {
    //返回出错信息
    MessageBox.Show (ex.ToString ());
    state=false;
   }
  //返回标志位
  return state;
  }
6) 接受服务器应答的函数 RecvResponse
它的作用就是从网络流中读取服务器返回的字节型的信息,将其转换成字符串型的变量,然后将其返回,可以通过其返回值来判断操作是否成功。具体实现代码如下所示:
private string RecvResponse()
  {
   int StreamSize=0;
   string ReturnValue ="";
   //定义一个字节型的数组
   byte[] ReadBuffer = new byte[1024] ;
   try
   {
    //从网络流中读取数据,并返回读取的个数
    StreamSize=ns.Read(ReadBuffer,0,ReadBuffer.Length);
   }
   catch (Exception ex)
   {
    //返回异常信息
    MessageBox.Show(ex.ToString ());
   }
   if (StreamSize!=0)
   {
  //将当前读取的信息转换成字符串型然后返回
ReturnValue= Encoding.Default.GetString(ReadBuffer).Substring(0,StreamSize);
   }
   return ReturnValue;
  }
7) 重载的函数 Dialog
它们的作用是与服务器交互,发送命令并接收回应。不同的是参数是字符串类型的那个函数,每次发送一条命令,并接受服务器的响应,根据响应的信息来判断交互的结果是否成功。而参数是字符串数组的函数每次发送的是一组命令,用于和服务器的交互,这个函数主要是用于ESMTP服务器的验证的功能,因为验证的过程是一个等待然后又输入的过程,因此将他们放在一个数组中有利于理解和操作。而他们的实现主要是通过调用上面的发送SMTP命令函数SendCommand以及接受SMTP服务器响应的函数RecvResponse来实现的。具体的代码如下所示:
private bool Dialog(string str,string errstr)
  {  
   bool flag=false;
   if(str==null||str.Trim()=="")

 << 上一页  [11] [12] [13] [14] [15] [16] [17] [18] 下一页

C#电子邮件客户端软件设计(开题报告+英文文献+答辩PPT) 第15页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。