C#利用Pop3Client 读取Email
1) Pop3Client的一些主要的方法
connect(); //提供popserver,popPort,user,pwd连接邮件服务器
user();//提供邮件用户
pwd();//提供邮件该用户的密码
list();//+ok 7 8889,返回正确格式为+OK,7是指新邮件数量.
RETR(int msg);//读取第msg封邮件.
2) CodeProject源码对Pop3Client的一些方法的扩展,使得pop3读取邮件更方便,代码下方列出了源码的链接。
private const string PopServer = "";//setting PopServer
private const int PopPort = 995;
private const string User = "";//setting user
private const string Pass = "";//setting password
private void ReadEmail()
{
using (Pop3Client client = new Pop3Client(PopServer, PopPort, true, User, Pass))
{
client.Trace += new Action<string>(Console.WriteLine);
client.Authenticate();
client.Stat();
foreach (Pop3ListItem item in client.List())
{
MailMessageEx message = client.RetrMailMessageEx(item);
//message.Children.Count
//message.MessageId
//message.Subject
//message.Attachments.Count
//message.Body
client.Dele(item);
}
client.Noop();
client.Rset();
client.Quit();
}
}
private const int PopPort = 995;
private const string User = "";//setting user
private const string Pass = "";//setting password
private void ReadEmail()
{
using (Pop3Client client = new Pop3Client(PopServer, PopPort, true, User, Pass))
{
client.Trace += new Action<string>(Console.WriteLine);
client.Authenticate();
client.Stat();
foreach (Pop3ListItem item in client.List())
{
MailMessageEx message = client.RetrMailMessageEx(item);
//message.Children.Count
//message.MessageId
//message.Subject
//message.Attachments.Count
//message.Body
client.Dele(item);
}
client.Noop();
client.Rset();
client.Quit();
}
}
参考源码:
http://www.codeproject.com/KB/IP/NetPopMimeClient.aspx
3) 个人觉得还有些问题完善,也可能是没找到该功能的应用,等待后期的补充。
需要解决的问题:如何设置一份邮件已读,下次再读取的时候,就不在读取设置为已读的这封邮件。如果读完新邮件就从邮件服务器上删除掉该邮件,可以达到下次不再读取到该邮件,似乎有点......