我试图用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中读取电子邮件?
答案 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();
}