使用C#,如何通过POP3从Gmail服务器检索电子邮件列表

5

你好,

我有一个应用程序,使用SSL通过Gmail SMTP服务器(smtp.gmail.com)发送电子邮件。

现在我想从该帐户读取电子邮件,有没有人知道如何在C#和ASP.NET中编写程序实现这一点?

目前我正在使用以下代码:

TcpClient tcpClient = new TcpClient();
tcpClient.Connect("pop.gmail.com", 587);

NetworkStream netStream = tcpClient.GetStream();
System.IO.StreamReader strReader = new System.IO.StreamReader(netStream);

Label7.Text = strReader.ReadLine() + "<br />"; 
//Label7.Text = "Server connected!";

byte[] WriteBuffer = new byte[1024];
ASCIIEncoding enc = new System.Text.ASCIIEncoding();

WriteBuffer = enc.GetBytes("USER " + TextBox4.Text + "\r\n");
netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
Label7.Text += strReader.ReadLine() + "<br />";

WriteBuffer = enc.GetBytes("PASS " + TextBox5.Text + "\r\n");
netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
Label7.Text += strReader.ReadLine() + "<br />";

WriteBuffer = enc.GetBytes("LIST\r\n");
netStream.Write(WriteBuffer, 0, WriteBuffer.Length);

String ListMessage;
while (true)
{
    ListMessage = strReader.ReadLine();
    if (ListMessage == ".")
    {
        break;
    }
    else
    {
        Label7.Text += ListMessage + "<br />";
        continue;
    }
}

WriteBuffer = enc.GetBytes("QUIT\r\n");
netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
Label7.Text += strReader.ReadLine() + "<br />"; 

当我调试它时,显示已连接但无法检索电子邮件。


在TcpClient.Connect地址中,应该是pop.gmail.com而不是smtp.gmail.com吗? - Iñaki Elcoro
啊,是的,我的错误,我已经编辑为pop.gmail.com,但我仍然有问题... - Jeff Norman
2个回答

1

我参与的这个开源项目的POP3功能包含了你所需的一切,包括安全通信支持和高级身份验证。

如果你真的想自己做一个,浏览源代码可能会为你节省数天的开发时间。


这个可以适用于任何类型的账户吗?比如Gmail账户? - Jeff Norman
任何POP3帐户,包括gmail。 - user333306
这个项目在 CodePlex 上已经死了。示例甚至无法构建。 - Seany84
@Seany84:你必须引用先前编译的 DLL,或使用最新的版本。 - user333306

0

我正在使用在The Code Project上出现的这个示例库链接文本,它具有一个漂亮而干净的API来处理POP3。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接