Mailkit身份验证失败

时间:2018-07-17 04:17:24

标签: c# imap mutex mailkit

我的问题:

相同的代码在一个实例中可以正常工作,但不能在项目的另一个实例中使用相同的用户名/密码进行身份验证。

我的代码:

static NetworkCredential _emailLoginCredentials;
_emailLoginCredentials = new NetworkCredential(_accountName, _accountPassword, _accountDomain);

using (var client = new ImapClient(new ProtocolLogger("C://Temp//Logs//imap1.log")))
{
    var credentials = _emailLoginCredentials;
    var uri = new Uri(_emailServer);
    string serverReply = String.Empty;

    client.Timeout = _imapClientTimeOut;
    client.Connect(uri);
    client.AuthenticationMechanisms.Remove("XOAUTH2");
    client.Authenticate(credentials);
    client.Inbox.Open(FolderAccess.ReadWrite);
}

错误:

Connected to imap://mail.company.com:143/?starttls=when-available
S: * OK The Microsoft Exchange IMAP4 service is ready.
C: A00000000 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
S: A00000000 OK CAPABILITY completed.
C: A00000001 AUTHENTICATE PLAIN
S: +
C: ZljbAY3hDYXJhdHNkZXYAQ2FyYXRzMTIz
S: A00000001 NO AUTHENTICATE failed.
C: A00000002 LOGIN username Password
S: A00000002 NO LOGIN failed.

工作项目中的日志(相同的代码):

Connected to imap://mail.company.com:143/?starttls=when-available
S: * OK The Microsoft Exchange IMAP4 service is ready.
C: A00000000 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
S: A00000000 OK CAPABILITY completed.
C: A00000001 AUTHENTICATE PLAIN
S: +
C: AN4FyYXRzZGV2AENhcmF0czEyMw==
S: A00000001 OK AUTHENTICATE completed.

要进行故障排除,我甚至都对用户名和密码进行了硬编码。但是,结果仍然是相同的-一种有效,另一种无效。

嗯,项目设置等方面存在一些差异。例如,在非工作项目中,我正在Mutex中使用上述身份验证代码。另外,整个方法是protected override async Task Process(TaskMessage message)

找到了这篇文章,但这是由NTLM引起的,与我的情况无关。

Mailkit Authenticate to Imap fails

1 个答案:

答案 0 :(得分:2)

普通身份验证包含两个或三个字符串:“我希望以x身份登录,我实际上是y,而我的密码是z”。两种常见情况是x = y和x未指定。 y是极少数特权的超级用户,可以像其他用户一样登录。

在您的工作情况下,x为空,y为xCaratsdev。在您的错误情况下,x是可能的。在这两种情况下,您的密码都是相同的(在base64 blob中)。您的下一个工作是找出该怪胎的来源。但首先,请更改密码。