using System;
using System.Net.Sockets;
using System.Net;
using System.Security.Cryptography;
using System.IO;

                           
/////////////////////////////////////////////
                           // 类名:Pop3         //
                           
// 功能:接收电子邮件          //
                           ///////////////////////////////////////////// 

namespace ZTSX.Email
{
 
/// <summary>
 
/// Pop3 的摘要说明。
 
/// </summary>

 public class Pop3
 
{
  
private string mstrHost     = null;  //主机名称或IP地址
  private int mintPort     = 110;  //主机的端口号(默认为110)
  private TcpClient mtcpClient   = null;  //客户端
  private NetworkStream mnetStream  = null;  //网络基础数据流
  private StreamReader m_stmReader  = null;  //读取字节流
  private string mstrStatMessage   = null;  //执行STAT命令后得到的消息(从中得到邮件数)

  
/// <summary>
  
/// 构造函数
  
/// </summary>
  
/// <remarks>一个邮件接收对象</remarks>

  public Pop3()
  
{
  }


  
/// <summary>
  
/// 构造函数
  
/// </summary>
  
/// <param name="host">主机名称或IP地址</param>

  public Pop3(string host)
  
{
   mstrHost 
= host;
  }


  
/// <summary>
  
/// 构造函数
  
/// </summary>
  
/// <param name="host">主机名称或IP地址</param>
  
/// <param name="port">主机的端口号</param>
  
/// <remarks>一个邮件接收对象</remarks>

  public Pop3(string host,int port)
  
{
   mstrHost 
= host;
   mintPort 
= port;
  }


  
属性

  
私有方法

  
/// <summary>
  
/// 与主机建立连接
  
/// </summary>
  
/// <returns>
  
/// 类型:布尔
  
/// 内容:连接结果(true为连接成功,false为连接失败)
  
/// </returns>
  
/// <remarks>与主机建立连接</remarks>

  public bool Connect()
  
{
   
if(mstrHost == null)
    
throw new Exception("请提供SMTP主机名称或IP地址!");
   
if(mintPort == 0)
    
throw new Exception("请提供SMTP主机的端口号");
   
try
   
{
    mtcpClient 
= new TcpClient(mstrHost,mintPort);
    mnetStream 
= mtcpClient.GetStream();
    m_stmReader 
= new StreamReader(mtcpClient.GetStream());

    
string strMessage = m_stmReader.ReadLine();
    
if(CheckCorrect(strMessage,"+OK"== true)
     
return true;
    
else
     
return false;
   }

   
catch(SocketException exc)
   
{
    
throw new Pop3Exception(exc.ToString());
   }

   
catch(NullReferenceException exc)
   
{
    
throw new Pop3Exception(exc.ToString());
   }

  }


  
Pop3命令


  
/// <summary>
  
/// 收取邮件     
  
/// </summary>
  
/// <param name="user">用户名</param>
  
/// <param name="password">口令</param>
  
/// <returns>
  
/// 类型:字符串数组
  
/// 内容:解码前的邮件内容
  
/// </returns>
  
///<remarks>收取邮箱中的未读邮件</remarks>

  public string[] Receive(string user,string password)
  
{
   
try
   
{
    
return ReceiveMail(user,password);
   }

   
catch(Pop3Exception exc)
   
{
    
throw new Pop3Exception(exc.ToString());
   }

  }


  
/// <summary>
  
/// 断开所有与服务器的会话
  
/// </summary>
  
/// <remarks>断开所有与服务器的会话</remarks>

  public void DisConnect()
  
{
   
try
   
{
    Quit();
    
if(m_stmReader != null)
     m_stmReader.Close();
    
if(mnetStream != null)
     mnetStream.Close();
    
if(mtcpClient != null)
     mtcpClient.Close();
   }

   
catch(SocketException exc)
   
{
    
throw new Pop3Exception(exc.ToString());
   }

  }


  
/// <summary>
  
/// 删除邮件
  
/// </summary>
  
/// <param name="number">邮件号</param>

  public void DeleteMail(int number)
  
{
   
//删除邮件
   int iMailNumber = number + 1;
   
if(DELE(iMailNumber).Equals("Error"))
    
throw new Pop3Exception("删除第" + iMailNumber.ToString() + "时出现错误!");
  }


 }

}




http://blog.csdn.net/qdzx2008/archive/2006/11/13/1381836.aspx
posted on 2007-03-14 12:22  mbskys  阅读(522)  评论(0)    收藏  举报