2017-02-17 33 views
0

我最近搬到MailKit库,因为我使用的是S22.Imap,但我看到维护不是很好。“IMAP服务器意外断开连接”使用993端口和MailKit

我以前通过143和993连接了我自己的邮件服务器,但没有办法通过993和MailKit来完成。

它只是说“IMAP服务器意外断开连接”。它甚至没有达到Authenticate方法,并且日志唯一地表示“连接到imap://mail.xxx.com:993 /”。

我目前使用的

imap.Connect(hostname, 993, SecureSocketOptions.None); 

我甚至有不同SecureSocketOptions它有没有运气尝试。任何想法可能是错的?工作正常,如果我通过143连接,并且在使用S22.Imap时通过993工作。

P.S:它引发的异常是MailKit.Net.Imap.ImapProtocolException。

谢谢。

+0

可能,SSL设置不正确在客户端。 993通常需要TLS。 – Max

回答

1

993端口是SSL包裹的锅,所以你需要使用:

imap.Connect(hostname, 993, SecureSocketOptions.SslOnConnect); 

对于端口143,你可能想使用:

imap.Connect(hostname, 143, SecureSocketOptions.StartTlsWhenAvailable); 
+0

感谢您的回复,@ jstedfast。如果我使用StartTlsWhenAvailable属性,它会抛出“远程证书无法通过认证过程”,这就是为什么我保留。没有。 和我使用SslOnConnect时出现同样的错误。有任何想法吗?它曾经通过该端口使用另一个库,所以......到底是什么!谢谢! – Gonzo345

+0

您需要将'client.ServerCertificateValidationCallback'设置为可以验证您的服务器证书的东西。您的计算机不信任您的IMAP服务器,因为它的证书可能未由受信任的CA签名。 – jstedfast

+1

为了演示的目的,你可以这样做:'client.ServerCertificateValidationCallback =(s,c,h,e)=> true;' – jstedfast

相关问题