日期:2014-05-18 浏览次数:21049 次
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;
}
#region 属性
/// <summary>
/// 主机名称或IP地址
/// </summary>
/// <remarks>主机名称或IP地址 </remarks>
public string HostName
{
get{return mstrHost;}
set{mstrHost = value;}
}
/// <summary>
/// 主机的端口号
/// </summary>
/// <remarks>主机的端口号 </remarks>
public int Port
{
get{return mintPort;}
set{mintPort = value;}
}
#endregion
#region 私有方法
/// <summary>
/// 向网络访问的基础数据流中写数据(发送命令码)
/// </summary>
/// <param name="netStream">可以用于网络访问的基础数据流 </param>
/// <param name="command">命令行 </param>
/// <remarks>向网络访问的基础数据流中写数据(发送命令码) </remarks>
private void WriteToNetStream(ref NetworkStream netStream,String command)
{
string strToSend = command + "\r\n";
byte[] arrayToSend = System.Text.Encoding.ASCII.GetBytes(strToSend.ToCharArray());
netStream.Write(arrayToSend,0,arrayToSend.Length);
}
/// <summary>
/// 检查命令行结果是否正确
/// </summary>
/// <param name="message">命令行的执行结果 </param>
/// <param name="check">正确标志 </param>
/// <returns>
/// 类型:布尔
/// 内容:true表示没有错误,false为有错误
/// </returns>
/// <remarks>检查命令行结果是否有错误 </remarks>
private bool CheckCorrect(string message,string check)
{
if(message.IndexOf(check) == -1)
return false;
else
return true;
}
/// <summary>
/// 邮箱中的未读邮件数
/// </summary>
/// <p