asp.net没有阅读最新和所有电子邮件

时间:2014-09-08 06:21:15

标签: c# asp.net gmail

我试图用ASP.NET阅读gmail。我没有收到最新的电子邮件以及我只收到少量邮件。使用Java,我能够成功阅读所有邮件但是使用ASP.NET,我遇到了问题。我在网上经历过很多例子,但没有一个能为我工作(奇怪)。代码需要很长时间才能阅读电子邮件。我试着只读了20封电子邮件,等待的时间超过2分钟。

我正在使用OpenPop库

这是我的代码:

        Pop3Client pop3Client = new Pop3Client();
        pop3Client.Connect("pop.gmail.com", 995, true);
        pop3Client.Authenticate("##email##", "##password##");

        int count = pop3Client.GetMessageCount();
        DataTable dtMessages = new DataTable();
        dtMessages.Columns.Add("MessageNumber");
        dtMessages.Columns.Add("From");
        dtMessages.Columns.Add("Subject");
        dtMessages.Columns.Add("DateSent");
        int counter = 0;
        for (int i = count; i >= 1; i--)
        {
            Message message = pop3Client.GetMessage(i);
            dtMessages.Rows.Add();
            dtMessages.Rows[dtMessages.Rows.Count - 1]["MessageNumber"] = i;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["From"] = message.Headers.From.Address;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["Subject"] = message.Headers.Subject;
            dtMessages.Rows[dtMessages.Rows.Count - 1]["DateSent"] = message.Headers.DateSent.ToLocalTime();
            counter++;
            if (counter > 20)
            {
                break;
            }
        }
        gvEmails.DataSource = dtMessages;
        gvEmails.DataBind();

我是否可以对此代码进行更改以使其正常工作,以便它首先从Gmail中读取电子邮件?

1 个答案:

答案 0 :(得分:0)

我能够使用MailSystem.NET api解决它。这是我的代码:

    public void ReadEmails()
    {
        MailRepository rep = new MailRepository("imap.gmail.com", 993, true, @"email@gmail.com", "password");

        DataTable dtMessages = new DataTable();
        dtMessages.Columns.Add("MessageNumber");
        dtMessages.Columns.Add("From");
        dtMessages.Columns.Add("Subject");
        dtMessages.Columns.Add("DateSent");

        int x = 0;
        //foreach (Message email in rep.GetUnreadMails("Inbox"))
        foreach (Message email in rep.GetAllMails("Inbox"))
        {
            dtMessages.Rows.Add();

            dtMessages.Rows[x]["MessageNumber"] = x;
            dtMessages.Rows[x]["From"] = email.From;
            dtMessages.Rows[x]["Subject"] = email.Subject;
            dtMessages.Rows[x]["DateSent"] = email.Date.ToShortDateString();

            ++x;

            if (x >= 20) break;
        }

        gvEmails.DataSource = dtMessages;
        gvEmails.DataBind();
    }