我正在使用EAGetMail库来阅读Gmail中的电子邮件。 这是我的代码:
private void readMails(){
MailServer oServer=new MailServer("pop.gmail.com", "something@gmail.com", "noneedtoseethis", ServerProtocol.Pop3);
MailClient oClient = new MailClient("Client");
oServer.SSLConnection = true;
oServer.Port = 995;
try {
oClient.Connect(oServer);
MailInfo[] infos = oClient.GetMailInfos();
Console.WriteLine(infos.Length);
for (int i = 0; i < infos.Length; i++){
MailInfo info = infos[i];
Mail oMail = oClient.GetMail(info);
Console.WriteLine("From: {0}", oMail.From.ToString());
//oClient.Delete(info);
}
oClient.Quit();
} catch (Exception ep) {
Console.WriteLine(ep.Message);
}
}
虽然看起来唯一能得到的是我收到的新消息,每五分钟就有2或3个。
但我想阅读收件箱中的所有电子邮件,而不仅仅是新邮件
我怎样才能做到这一点?
答案 0 :(得分:2)
由于Gmail POP3服务器无法像普通POP3服务器那样工作,因此即使电子邮件未被删除,它也会自动隐藏旧电子邮件,因此我建议您使用IMAP4协议,然后您将阅读所有电子邮件。
只是改变: 服务器地址到imap.gmail.com, 服务器端口到993, ServerProtocol.Pop3到ServerProtocol.Imap4
就像这样:
private void readMails(){
MailServer oServer=new MailServer("imap.gmail.com", "something@gmail.com", "noneedtoseethis", ServerProtocol.Imap4);
MailClient oClient = new MailClient("Client");
oServer.SSLConnection = true;
oServer.Port = 993;
try {
oClient.Connect(oServer);
MailInfo[] infos = oClient.GetMailInfos();
Console.WriteLine(infos.Length);
for (int i = 0; i < infos.Length; i++){
MailInfo info = infos[i];
Mail oMail = oClient.GetMail(info);
Console.WriteLine("From: {0}", oMail.From.ToString());
//oClient.Delete(info);
}
oClient.Quit();
} catch (Exception ep) {
Console.WriteLine(ep.Message);
}
}