EAGetMail,如何阅读POP3 Gmail服务器上的所有电子邮件?

时间:2013-05-23 15:02:29

标签: c# email gmail pop3

我正在使用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个。

但我想阅读收件箱中的所有电子邮件,而不仅仅是新邮件 我怎样才能做到这一点?

1 个答案:

答案 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);
        }
    }