【问题标题】:MailKit.Net.Imap.ImapProtocolException: "Syntax error in IMAP server greeting. Unexpected token: [atom: OK]"MailKit.Net.Imap.ImapProtocolException:“IMAP 服务器问候语中的语法错误。意外的令牌:[atom:OK]”
【发布时间】:2020-03-20 21:13:51
【问题描述】:

代码:

using (var client = new ImapClient(new ProtocolLogger("logImap.txt")))
{
    // For demo-purposes, accept all SSL certificates
    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
    client.Connect("imap.yandex.ru", 993, true);
    client.Authenticate(login, password);
    // The Inbox folder is always available on all IMAP servers...
    var inbox = client.Inbox;
    inbox.Open(FolderAccess.ReadOnly);
    Console.WriteLine("Total messages: {0}", inbox.Count);
    Console.WriteLine("Recent messages: {0}", inbox.Recent);
    for (int i = 0; i < inbox.Count; i++)
    {
        var message = inbox.GetMessage(i);
        Console.WriteLine("Subject: {0}", message.Subject);
    }
    client.Disconnect(true);
}

堆栈跟踪:

MailKit.Net.Imap.ImapEngine.AssertToken(MailKit.Net.Imap.ImapToken, MailKit.Net.Imap.ImapTokenType,字符串,对象[]) MailKit.Net.Imap.ImapEngine.ConnectAsync(MailKit.Net.Imap.ImapStream, 布尔,System.Threading.CancellationToken) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult() MailKit.Net.Imap.ImapClient.ConnectAsync(string, int, MailKit.Security.SecureSocketOptions, bool, System.Threading.CancellationToken) System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) ...

还有logImap.txt:

Connected to imaps://imap.yandex.ru:993/
S: OK IMAP4

我能解决这个问题吗?

【问题讨论】:

    标签: c# imap mailkit


    【解决方案1】:

    这是我在运行您的程序时得到的(在 Connect() 调用之后注释掉所有内容,因为我没有要使用的用户名和密码字符串)。

    Connected to imaps://imap.yandex.ru:993/
    S: * OK Yandex IMAP4rev1 at iva1-ea72743daf57.qloud-c.yandex.net:993 ready to talk with ::ffff:72.94.35.232:51061, 2020-Mar-20 16:12:10, ACZCR35nKa61
    C: A00000000 CAPABILITY
    S: * CAPABILITY IMAP4rev1 CHILDREN UNSELECT LITERAL+ NAMESPACE XLIST BINARY UIDPLUS ENABLE ID AUTH=PLAIN AUTH=XOAUTH2 IDLE MOVE
    S: A00000000 OK CAPABILITY Completed.
    C: A00000001 LOGOUT
    S: * BYE IMAP4rev1 Server logging out
    S: A00000001 OK LOGOUT Completed.
    

    在您的日志中,问候语看起来不同:

    S: OK IMAP4
    

    请注意,在我的例子中,问候语中的第一个字符是 *

    这表明您连接的服务器是损坏的 IMAP 服务器,并不是 MailKit 的错。

    Yandex 似乎是 IMAP 服务器的循环。我连接的那个显然可以工作,但你连接的那个坏了。

    【讨论】:

    • 是的,在家里可以用,可能是工作时路由问题,谢谢!
    猜你喜欢
    • 2019-10-28
    • 2019-01-17
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    相关资源
    最近更新 更多