繁体   English   中英

使用 MailKit 从 gmail 检索电子邮件

[英]Using MailKit to retrieve emails from gmail

我正在使用下面的代码来检索电子邮件。 但是我在尝试连接服务器时遇到了 Socket 异常(client.Connect(uri, cancel.Token);)。

未处理的异常:System.Net.Sockets.SocketException:连接超时

using MailKit;
using MimeKit;
using System.Net;
using System.Threading;
using MailKit.Net.Pop3;

namespace TestMail
{
class Program
{
    public static void Main (string[] args)
    {

            using (var client = new Pop3Client ()) {

            var Server  = "gmail.com";
            var Port = "995";
            var UseSsl = false;
            var credentials = new NetworkCredential("abc@gmail.com", "abc");
            var cancel = new CancellationTokenSource ();
            var uri = new Uri(string.Format("pop{0}://{1}:{2}", (UseSsl ? "s" : ""), Server, Port));

            //Connect to email server
            client.Connect(uri, cancel.Token);
            client.AuthenticationMechanisms.Remove ("XOAUTH2");
            client.Authenticate (credentials, cancel.Token);

            //Fetch Emails
            for (int i = 0; i < client.Count; i++) {
                var message = client.GetMessage (i);
                Console.WriteLine ("Subject: {0}", message.Subject);
            }

            //Disconnect Connection
            client.Disconnect(true);
        }
    }

}

}

我很确定你需要使用pop.gmail.com而不仅仅是gmail.com作为服务器。

使用下面的代码我只是在我的一个项目中测试它并且它运行良好

   using (var client = new Pop3Client()) {
 // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS) 
 client.ServerCertificateValidationCallback = (s, c, h, e) => true; 
 client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
 client.Connect("pop.gmail.com", "995", true);
 client.AuthenticationMechanisms.Remove("XOAUTH2"); 
 client.Authenticate(MailUsername, MailPassword);
..
....
......
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM