尝试使用 Office 365 帐户通过 smtp 发送邮件时出错
Error when trying to send mail over smtp with Office 365 account
明显使用 Chilkat 插件的应用程序不再使用 Office 365 帐户正确发送电子邮件。从本地交换迁移到 Microsoft 365 后,帐户和服务器设置在今年 3 月底发生了变化。此外,需要为邮箱禁用客户端身份验证。之后,从应用程序发送电子邮件就可以了。现在,它再次没有。昨天,一封邮件在电脑重启后可以成功发送-接下来的邮件又失败了。
我一直在寻找错误的原因,而且我也不知道在连接过程中从应用程序发送了哪些数据,这使得分析更加困难。
我发现 this post 提到 TLS 1.0 的条目需要在注册表中。那些不见了,但有 TLS 1.2 的条目,所以我不认为这是一个问题,特别是因为有关密码学的条目(也在 post 中提到)确实已经存在。与此同时,我还是添加了它们。
下面是 Chilkat 日志,显示 - 在服务器准备就绪后 - clientHandshake2 失败,错误代码为 0x2746。
应用程序的支持人员找不到任何问题并询问了错误代码 - 我认为他应该能够检查。当我在 phone 上与他交谈时,我发现他对 Chilkat 的了解并不比我多。他提到了一个有趣的点,需要仔细检查:据他直接从用户那里获悉 - 或者他是如何理解的 - 如果用户选择另一个“Mandant”(客户端),错误就不会出现在应用程序中并从那里发送电子邮件。
谁能帮忙找出错误的原因?
SendEmail:
DllDate: May 25 2017
ChilkatVersion: 9.5.0.68
UnlockPrefix: WERNERMAILQ
Architecture: Little Endian; 32-bit
Language: Visual C++ 2017 (32-bit)
VerboseLogging: 0
sendEmailInner:
renderToMime:
createEmailForSending:
Auto-generating Message-ID
--createEmailForSending
renderToMime: Elapsed time: 0 millisec
--renderToMime
sendMimeInner:
ensureSmtpSession:
ensureSmtpConnection:
SmtpHost: smtp.office365.com
SmtpPort: 587
SmtpUsername: edith.beer@halten.ch
SmtpSsl: 0
StartTLS: 1
smtpConnect:
smtpHostname: smtp.office365.com
smtpPort: 587
connectionIsReady:
Need new SMTP connection
--connectionIsReady
smtpSocketConnect:
socketOptions:
SO_SNDBUF: 262144
SO_RCVBUF: 4194304
TCP_NODELAY: 1
SO_KEEPALIVE: 1
--socketOptions
--smtpSocketConnect
smtpGreeting:
readSmtpResponse:
SmtpCmdResp: 220 AM0PR02CA0163.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 23 Aug 2021 11:51:12 +0000
--readSmtpResponse
--smtpGreeting
startTLS:
sendCmdToSmtp:
SmtpCmdSent: EHLO EWGH-N-FV<CRLF>
--sendCmdToSmtp
readSmtpResponse:
SmtpCmdResp: 250-AM0PR02CA0163.outlook.office365.com Hello [213.221.219.37]
SmtpCmdResp: 250-SIZE 157286400
SmtpCmdResp: 250-PIPELINING
SmtpCmdResp: 250-DSN
SmtpCmdResp: 250-ENHANCEDSTATUSCODES
SmtpCmdResp: 250-STARTTLS
SmtpCmdResp: 250-8BITMIME
SmtpCmdResp: 250-BINARYMIME
SmtpCmdResp: 250-CHUNKING
SmtpCmdResp: 250 SMTPUTF8
--readSmtpResponse
sendCmdToSmtp:
SmtpCmdSent: STARTTLS<CRLF>
--sendCmdToSmtp
readSmtpResponse:
SmtpCmdResp: 220 2.0.0 SMTP server ready
--readSmtpResponse
clientHandshake:
clientHandshake2:
readHandshakeMessages:
WindowsError: Eine vorhandene Verbindung wurde vom Remotehost geschlossen.
WindowsErrorCode: 0x2746
maxToReceive: 5
Failed to receive data on the TCP socket
Failed to read beginning of SSL/TLS record.
b: 0
dbSize: 0
nReadNBytes: 0
idleTimeoutMs: 30000
--readHandshakeMessages
--clientHandshake2
--clientHandshake
Client handshake failed. (1)
connectionClosed: 0
Failed to establish TLS connection.
--startTLS
--smtpConnect
--ensureSmtpConnection
--ensureSmtpSession
--sendMimeInner
--sendEmailInner
Failed.
--SendEmail
--ChilkatLog
23.08.2021 13:48:27 -F- Beim Versand der Lohnabrechnung per Email an Mitarbeiter(in) Nadine Aeschlimann ist ein Fehler aufgetreten!
您使用的是旧版本的 Chilkat。尝试使用最新版本进行测试。
在此期间我们可以解决它。
原因是外发请求被防火墙拦截了。奇怪的是,其中一些通过了,但不是全部。这就是网络问题最初不在我们调查重点的原因。
明显使用 Chilkat 插件的应用程序不再使用 Office 365 帐户正确发送电子邮件。从本地交换迁移到 Microsoft 365 后,帐户和服务器设置在今年 3 月底发生了变化。此外,需要为邮箱禁用客户端身份验证。之后,从应用程序发送电子邮件就可以了。现在,它再次没有。昨天,一封邮件在电脑重启后可以成功发送-接下来的邮件又失败了。
我一直在寻找错误的原因,而且我也不知道在连接过程中从应用程序发送了哪些数据,这使得分析更加困难。
我发现 this post 提到 TLS 1.0 的条目需要在注册表中。那些不见了,但有 TLS 1.2 的条目,所以我不认为这是一个问题,特别是因为有关密码学的条目(也在 post 中提到)确实已经存在。与此同时,我还是添加了它们。
下面是 Chilkat 日志,显示 - 在服务器准备就绪后 - clientHandshake2 失败,错误代码为 0x2746。
应用程序的支持人员找不到任何问题并询问了错误代码 - 我认为他应该能够检查。当我在 phone 上与他交谈时,我发现他对 Chilkat 的了解并不比我多。他提到了一个有趣的点,需要仔细检查:据他直接从用户那里获悉 - 或者他是如何理解的 - 如果用户选择另一个“Mandant”(客户端),错误就不会出现在应用程序中并从那里发送电子邮件。
谁能帮忙找出错误的原因?
SendEmail:
DllDate: May 25 2017
ChilkatVersion: 9.5.0.68
UnlockPrefix: WERNERMAILQ
Architecture: Little Endian; 32-bit
Language: Visual C++ 2017 (32-bit)
VerboseLogging: 0
sendEmailInner:
renderToMime:
createEmailForSending:
Auto-generating Message-ID
--createEmailForSending
renderToMime: Elapsed time: 0 millisec
--renderToMime
sendMimeInner:
ensureSmtpSession:
ensureSmtpConnection:
SmtpHost: smtp.office365.com
SmtpPort: 587
SmtpUsername: edith.beer@halten.ch
SmtpSsl: 0
StartTLS: 1
smtpConnect:
smtpHostname: smtp.office365.com
smtpPort: 587
connectionIsReady:
Need new SMTP connection
--connectionIsReady
smtpSocketConnect:
socketOptions:
SO_SNDBUF: 262144
SO_RCVBUF: 4194304
TCP_NODELAY: 1
SO_KEEPALIVE: 1
--socketOptions
--smtpSocketConnect
smtpGreeting:
readSmtpResponse:
SmtpCmdResp: 220 AM0PR02CA0163.outlook.office365.com Microsoft ESMTP MAIL Service ready at Mon, 23 Aug 2021 11:51:12 +0000
--readSmtpResponse
--smtpGreeting
startTLS:
sendCmdToSmtp:
SmtpCmdSent: EHLO EWGH-N-FV<CRLF>
--sendCmdToSmtp
readSmtpResponse:
SmtpCmdResp: 250-AM0PR02CA0163.outlook.office365.com Hello [213.221.219.37]
SmtpCmdResp: 250-SIZE 157286400
SmtpCmdResp: 250-PIPELINING
SmtpCmdResp: 250-DSN
SmtpCmdResp: 250-ENHANCEDSTATUSCODES
SmtpCmdResp: 250-STARTTLS
SmtpCmdResp: 250-8BITMIME
SmtpCmdResp: 250-BINARYMIME
SmtpCmdResp: 250-CHUNKING
SmtpCmdResp: 250 SMTPUTF8
--readSmtpResponse
sendCmdToSmtp:
SmtpCmdSent: STARTTLS<CRLF>
--sendCmdToSmtp
readSmtpResponse:
SmtpCmdResp: 220 2.0.0 SMTP server ready
--readSmtpResponse
clientHandshake:
clientHandshake2:
readHandshakeMessages:
WindowsError: Eine vorhandene Verbindung wurde vom Remotehost geschlossen.
WindowsErrorCode: 0x2746
maxToReceive: 5
Failed to receive data on the TCP socket
Failed to read beginning of SSL/TLS record.
b: 0
dbSize: 0
nReadNBytes: 0
idleTimeoutMs: 30000
--readHandshakeMessages
--clientHandshake2
--clientHandshake
Client handshake failed. (1)
connectionClosed: 0
Failed to establish TLS connection.
--startTLS
--smtpConnect
--ensureSmtpConnection
--ensureSmtpSession
--sendMimeInner
--sendEmailInner
Failed.
--SendEmail
--ChilkatLog
23.08.2021 13:48:27 -F- Beim Versand der Lohnabrechnung per Email an Mitarbeiter(in) Nadine Aeschlimann ist ein Fehler aufgetreten!
您使用的是旧版本的 Chilkat。尝试使用最新版本进行测试。
在此期间我们可以解决它。
原因是外发请求被防火墙拦截了。奇怪的是,其中一些通过了,但不是全部。这就是网络问题最初不在我们调查重点的原因。