www.pudn.com > mailreveive.rar > Pop3Connection.cs
using System;
using System.IO;
using System.Net.Sockets;
namespace Pop3Com
{
///
/// Pop3Connection 的摘要说明。
///
internal class Pop3Connection
{
// 成员变量
private TcpClient socket;
private StreamReader reader;
private StreamWriter writer;
private bool connected;
///
/// 连接状态
///
public bool Connected
{
get{return connected;}
}
///
/// 创建一个新的连接
///
internal Pop3Connection()
{
socket = new TcpClient();
}
///
/// 在默认的端口上打开一个和主机的连接
///
/// 要连接的主机名
internal void Open(string host)
{
Open(host, 25);
}
///
/// 在某端口上打开一个和主机的连接
///
/// 要连接的主机名
/// 要连接的端口号
internal void Open(string host, int port)
{
if(host == null || host.Trim().Length == 0 || port <= 0)
{
throw new System.ArgumentException("Invalid Argument found.");
}
socket.Connect(host, port);
reader = new StreamReader(socket.GetStream(), System.Text.Encoding.ASCII);
writer = new StreamWriter(socket.GetStream(), System.Text.Encoding.ASCII);
connected = true;
}
///
/// 关闭连接
///
internal void Close()
{
reader.Close();
writer.Flush();
writer.Close();
reader = null;
writer = null;
socket.Close();
connected = false;
}
///
/// 给主机发送一个命令
///
/// 要发送的命令
internal void SendCommand(string cmd)
{
writer.WriteLine(cmd);
writer.Flush();
}
///
/// 给主机发送数据,用来发送附件
///
/// 数据缓存
/// 数据缓存的开始点
/// 数据长度
internal void SendData(char[] buf, int start, int length)
{
writer.Write(buf, start, length);
}
///
/// 从主机获取响应信息
///
/// 从主机获取的文本信息
/// 从主机获取的状态码
internal void GetReply(out string reply, out int code)
{
reply = reader.ReadLine();
code = reply == null ? -1 : Int32.Parse(reply.Substring(0, 3));
}
}
}