1

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

但我想阅读收件箱中的所有电子邮件,而不仅仅是新来的邮件
,我该怎么做?

4

1 回答 1

4

因为 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);
        }
    }
于 2013-07-11T09:06:06.903 回答