什么是 POP3
POP3 (Post Office Protocol 3) 即邮局协议的第 3 个版本,它规定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的 第一个离线协议标准, POP3 允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循 POP3 协议的接收邮件服务器,用来接收电子邮件的。
POP3 命令
USER username 认证用户名
PASS password 认证密码认证,认证通过则状态转换
APOP name,digest 认可一种安全传输口令的办法,执行成功导致状态转换,请参见 RFC 1321 。
STAT 处理请求 server 回送邮箱统计资料,如邮件数、 邮件总字节数
UIDL n 处理 server 返回用于该指定邮件的唯一标识, 如果没有指定,返回所有的。
LIST n 处理 server 返回指定邮件的大小等
RETR n 处理 server 返回邮件的全部文本
DELE n 处理 server 标记删除,QUIT 命令执行时才真正删除
RSET 处理撤消所有的 DELE 命令
TOP n,m 处理 返回 n 号邮件的前 m 行内容,m 必须是自然数
NOOP 处理 server 返回一个肯定的响应
QUIT 希望结束会话。如果 server 处于"处理" 状态,则现在进入"更新"状态,删除那些标记成删除的邮件。如果 server 处于"认可"状态,则结束会话时 server 不进入"更新"状态 。
.net下实现收取邮件:
static void Main(string[] args)
{
NetworkStream ns;
StreamReader sr;
//接收的消息
string msg;
//发送到服务器的消息
string input = string.Empty;
//发送到服务器的二进制消息
Byte[] outbytes;
//创建客户端 服务器的地址与端口
TcpClient client = new TcpClient("pop.163.com", 110);
//返回用于发送和接收数据的 System.Net.Sockets.NetworkStream。
ns = client.GetStream();
//实例化sr,读取ns流
sr = new StreamReader(ns);
//从当前流中读取一行字符并将数据作为字符串返回。
msg = sr.ReadLine();
//发送给服务器的消息
input = "user tgfgsdgf@163.com\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
//讲消息写入发送流
ns.Write(outbytes, 0, outbytes.Length);
//读取服务器响应的消息 +OK core mail
msg = sr.ReadLine();
input = "pass rytuyuiur\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
//+OK 362 message(s) [12415637 byte(s)]
msg = sr.ReadLine();
//向服务器发送取邮件数目的命令
input = "stat" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
msg = sr.ReadLine();
int count = 0;
//如果返回错误消息
if (msg.Substring(0, 4) == "-ERR")
{
count = -1;
}
string[] msglist=msg.Split(' ');
count = msg[1];
//与服务器断开连接
input = "quit" + "\r\n";
outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
ns.Write(outbytes, 0, outbytes.Length);
ns.Close();
Console.WriteLine(msg);
}