【问题标题】:asp.net not reading latest and all emailsasp.net 不阅读最新的和所有的电子邮件
【发布时间】:2014-09-08 06:21:14
【问题描述】:

我尝试使用 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 的电子邮件?

【问题讨论】:

    标签: c# asp.net gmail


    【解决方案1】:

    我能够使用 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();
        }
    

    【讨论】:

      猜你喜欢
      • 2021-07-02
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多