c# - Mailkit 身份验证失败

标签 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

最佳答案

普通身份验证包含两个或三个字符串:“我希望以 x 身份登录,实际上我是 y,我的密码是 z”。两种常见情况是 x=y 和 x not specified。极少数情况下,y 是 super 特权管理用户,可以以其他人身份登录。

在您的工作案例中,x 为空,y 为 xCaratsdev。在您的错误情况下,x 是 gicnt。您的密码在这两种情况下都是相同的(它在 base64 blob 中)。你的下一个工作是找出那个 gicnt 的来源。但首先,更改密码。

关于c# - Mailkit 身份验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51373156/

相关文章:

c# - 只释放给后进线程的线程同步(加锁)

c++ - 当线程数增加时,多线程文件 IO 程序的行为不可预测

消费者-生产者。没有错误。有时工作。为什么?

php - 无法使用 IMAP 获取纯文本邮件内容

PHP imap 通过代理

c# - 如何在没有使用 c# 安装 Excel 的情况下创建具有密码保护的 Excel 2003 (.XLS) 文件?

c# - 这个 thread.abort() 正常安全吗?

c# - Winform显示屏幕分辨率

c# - 使用 .Result 的异步方法

php 计算一封电子邮件中有多少个附件