尝试使用 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。尝试使用最新版本进行测试。

在此期间我们可以解决它。

原因是外发请求被防火墙拦截了。奇怪的是,其中一些通过了,但不是全部。这就是网络问题最初不在我们调查重点的原因。