我的问题:
同样的代码在一个实例中可以正常工作,但在另一个实例中无法使用相同的用户名/密码进行身份验证。
我的代码:
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