Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么使用Office365 SMTP进行身份验证时会声明正确的凭据无效?_C#_.net Core_Smtp_Mailkit_Smtp Auth - Fatal编程技术网

C# 为什么使用Office365 SMTP进行身份验证时会声明正确的凭据无效?

C# 为什么使用Office365 SMTP进行身份验证时会声明正确的凭据无效?,c#,.net-core,smtp,mailkit,smtp-auth,C#,.net Core,Smtp,Mailkit,Smtp Auth,我一直在尝试使用Office 365的SMTP功能,但在尝试使用它进行身份验证时遇到了困难 这是我正在测试的代码: string host = "smtp.office365.com"; int port = 587; string username = "<redacted>"; string password = "<redacted>"; var client = new SmtpClient(new ProtocolLogger("C:\\temp\\maile

我一直在尝试使用Office 365的SMTP功能,但在尝试使用它进行身份验证时遇到了困难

这是我正在测试的代码:

string host = "smtp.office365.com";
int port = 587;
string username = "<redacted>";
string password = "<redacted>";

var client = new SmtpClient(new ProtocolLogger("C:\\temp\\mailerLog.log"));

client.Connect(host, port, MailKit.Security.SecureSocketOptions.Auto);
{
    client.Authenticate(new NetworkCredential(username, password));
}
InnerException
的类型为
MailKit.Net.Smtp.SmtpCommandException
,并且具有
AuthenticationInvalidCredentials
StatusCode
,这表明凭据一定是错误的……但为什么呢?除了帐户本身之外,office 365的凭据可以/应该是什么?我做错了什么

我觉得一定有一个步骤我遗漏了,比如需要在Office365中配置的东西,但是在浏览了管理面板之后,我不确定它可能是什么

我也试着看一下什么被记录下来,但它似乎并没有向我透露太多。我已将其包括在下面(对识别信息进行了编辑),以防更熟悉SMTP的人注意到某些事情,从而暴露出问题:

Connected to smtp://smtp.office365.com:587/?starttls=when-available
S: 220 <redacted>.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 27 Sep 2019 20:52:52 +0000
C: EHLO [192.168.1.17]
S: 250-<redacted>.outlook.office365.com Hello [<redacted>]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 SMTP server ready
C: EHLO [192.168.1.17]
S: 250-<redacted>.outlook.office365.com Hello [<redacted>]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-AUTH LOGIN XOAUTH2
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: <redacted>
S: 334 UGFzc3dvcmQ6
C: <redacted>
S: 535 5.7.3 Authentication unsuccessful [<redacted>.<redacted>.PROD.OUTLOOK.COM]
已连接到smtp://smtp.office365.com:587/?starttls=when-可用
S:220.outlook.office365.com Microsoft ESMTP邮件服务于2019年9月27日星期五20:52:52+0000准备就绪
C:EHLO[192.168.1.17]
S:250-.outlook.office365.com你好[]
S:250号157286400
S:250-流水线
S:250-DSN
S:250-EnhancedStatus代码
S:250-STARTTLS
S:250-8比特
S:250-BINARYMIME
S:250分块
S:250 SMTPUTF8
C:开始
S:220 2.0.0 SMTP服务器就绪
C:EHLO[192.168.1.17]
S:250-.outlook.office365.com你好[]
S:250号157286400
S:250-流水线
S:250-DSN
S:250-EnhancedStatus代码
S:250-AUTH登录XOAUTH2
S:250-8比特
S:250-BINARYMIME
S:250分块
S:250 SMTPUTF8
C:身份验证登录
S:334 VXNlcm5hbWU6
C:
S:334 UGFzc3dvcmQ6
C:
S:535.7.3身份验证未成功[…PROD.OUTLOOK.COM]

另外,我不认为这个问题是重复的,因为虽然在Stackoverflow上还有其他类似的问题,但它们要么使用Microsoft不推荐的
System.Net.Mail.SmtpClient
,要么涉及成熟的Exchange服务器,服务器端配置随时可用(除非我遗漏了某些内容).

也许您可以尝试创建一个新的Office365帐户,它无法像您的真实帐户一样进行身份验证,并为我提供该新帐户的用户名/密码,以便我可以调试该问题

您的用户名或密码是否包含非ASCII字符?标点符号呢


如果你想让我深入了解这一点,我需要知道用户名/密码是什么,以及MailKit发送的是什么,以防它发送了错误的字符串(很确定不是,但我还是会研究它)。如果您不向我提供该信息,我无法诊断问题。

除了“您的用户名或密码错误”之外,我不确定还有什么建议,除非office365.com在用户帐户设置中有类似的“启用不太安全的应用程序”设置。这是否回答了您的问题
A000..01普通身份验证
解码到,无需分离
。虽然我还没有在RFC中找到任何确认信息,但我的印象是,纯文本密码是以based64编码的形式传递的:。当密码的前缀为
时,密码将被剥离。当用户名后缀为
时,登录仍然失败。您的假设是错误的。用于分隔它们的字符不是
:'
,而是空字节(也称
'\0'
)。感谢您的快速响应。Linux
base64--decode
命令未指示存在空字符。但是,我仍然无法连接到Outlook。但是,请使用IMAP和POP3连接选项使用您的库进行实时访问。注意,我在该服务上为我的帐户启用了应用程序权限。我想我的下一个选择是使用Wireshark或类似工具来检测成功的浏览器访问和MailKit之间的通信差异……也许Outlook.Live.com的免费版本正在进行某种客户端检测和过滤。再次感谢。
Connected to smtp://smtp.office365.com:587/?starttls=when-available
S: 220 <redacted>.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 27 Sep 2019 20:52:52 +0000
C: EHLO [192.168.1.17]
S: 250-<redacted>.outlook.office365.com Hello [<redacted>]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-STARTTLS
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 SMTP server ready
C: EHLO [192.168.1.17]
S: 250-<redacted>.outlook.office365.com Hello [<redacted>]
S: 250-SIZE 157286400
S: 250-PIPELINING
S: 250-DSN
S: 250-ENHANCEDSTATUSCODES
S: 250-AUTH LOGIN XOAUTH2
S: 250-8BITMIME
S: 250-BINARYMIME
S: 250-CHUNKING
S: 250 SMTPUTF8
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: <redacted>
S: 334 UGFzc3dvcmQ6
C: <redacted>
S: 535 5.7.3 Authentication unsuccessful [<redacted>.<redacted>.PROD.OUTLOOK.COM]