delphi - Indy SMTP Connect 在不同 PC 上的处理方式不同

标签 delphi smtp delphi-7 indy10

在德尔福体育俱乐部成员(member)计划中,我使用俱乐部的 BTConnect 帐户(已迁移到 Office365)向成员(member)发送批量电子邮件。最近,BT 升级了身份验证,我将 SMTP 参数从 satNone 更改为 satDefault 和 utUseExplicitTLS。如果我在家运行该程序,它会按预期工作:

Stat Connected.
Recv 20/11/2012 16:36:02: 220 pod51016.outlook.com Microsoft ESMTP MAIL Service ready at Tue, 20 Nov 2012 16:36:01 +0000<EOL>
Sent 20/11/2012 16:36:02: EHLO macxp<EOL>
Recv 20/11/2012 16:36:02: 250-pod51016.outlook.com Hello [81.155.5.61]<EOL>250-SIZE 36700160<EOL>250-PIPELINING<EOL>250-DSN<EOL>250-ENHANCEDSTATUSCODES<EOL>250-STARTTLS<EOL>250-AUTH<EOL>250-8BITMIME<EOL>250-BINARYMIME<EOL>250 CHUNKING<EOL>
Sent 20/11/2012 16:36:02: STARTTLS<EOL>
Recv 20/11/2012 16:36:02: 220 2.0.0 SMTP server ready<EOL>
Sent 20/11/2012 16:36:02: EHLO macxp<EOL>
Recv 20/11/2012 16:36:02: 250-pod51016.outlook.com Hello [81.155.5.61]<EOL>250-SIZE 36700160<EOL>250-PIPELINING<EOL>250-DSN<EOL>250-ENHANCEDSTATUSCODES<EOL>250-AUTH LOGIN<EOL>250-8BITMIME<EOL>250-BINARYMIME<EOL>250 CHUNKING<EOL>
Sent 20/11/2012 16:36:02: AUTH LOGIN<EOL>
Recv 20/11/2012 16:36:02: 334 deleted<EOL>
Sent 20/11/2012 16:36:02: deleted<EOL>
Recv 20/11/2012 16:36:02: 334 deleted<EOL>
Sent 20/11/2012 16:36:02: deleted<EOL>
Recv 20/11/2012 16:36:04: 235 2.7.0 Authentication successful<EOL>
Sent 20/11/2012 16:36:04: RSET<EOL>
Recv 20/11/2012 16:36:10: 250 2.0.0 Resetting<EOL>
Sent 20/11/2012 16:36:10: MAIL FROM: <deleted@btconnect.com><EOL>
Recv 20/11/2012 16:36:10: 250 2.1.0 Sender OK<EOL>  

然后就可以了,没问题。 如果我将程序带到体育俱乐部并在那里运行,我会得到以下结果:

Stat Connected.
Recv 12/11/2012 15:17:31: 220 pod51014.outlook.com Microsoft ESMTP MAIL Service ready at Mon, 12 Nov 2012 15:17:03 +0000<EOL>
Sent 12/11/2012 15:17:31: EHLO ovscbob<EOL>
Recv 12/11/2012 15:17:31: 250-pod51014.outlook.com Hello [81.149.229.105]<EOL>250-SIZE 36700160<EOL>250-PIPELINING<EOL>250-DSN<EOL>250-ENHANCEDSTATUSCODES<EOL>250-STARTTLS<EOL>250-AUTH<EOL>250-8BITMIME<EOL>250-BINARYMIME<EOL>250 CHUNKING<EOL>
Sent 12/11/2012 15:17:31: STARTTLS<EOL>
Recv 12/11/2012 15:17:31: 220 2.0.0 SMTP server ready<EOL>
Sent 12/11/2012 15:17:31: QUIT<EOL>
Stat Disconnected.

看来 Indy 正在发出 QUIT 而不是第二个 EHLO 命令,但我不知道为什么。我更改了设置以使用 satSASL 和相关机制,得到了相同的结果。在家里效果很好,但在俱乐部就不行了。我有什么办法可以解决这个问题吗?大约一周前我也将 Indy 更新到了最新版本。

谢谢

最佳答案

当服务器收到 STARTTLS 命令并回复成功响应时,它期望 TIdSMTP 在发送任何进一步的命令之前启动 SSL/TLS 握手。在这种情况下,SSL/TLS 握手必定会失败,并且您应该会引发异常。如果发生异常,TIdSMTPBase.StartTLS() 会调用 Disconnect()。这是 TIdSMTP 在成功执行 STARTTLS 命令后发送 QUIT 命令的唯一方法,而不是发送第二个 EHLO >.

关于delphi - Indy SMTP Connect 在不同 PC 上的处理方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13478990/

相关文章:

delphi - 如何在 WS_EX_LAYERED 表单上绘制控件?

c# - Asp.net中的Email Delivery Message(如何查看邮件是否发送?)

ssl - 我怎样才能使我的电子邮件像 PayPal 一样经过验证

delphi - 如何绘制 Unicode 文本?

javascript - 用图像更新页面内的文本

delphi - 在 Delphi XE2 中开发 Mac 或 iOS 应用程序需要哪些硬件/软件?

sql-server - ADO 与 OLE DB 有什么关系?

delphi - 取消正在进行中的长时间运行的 TFDBatchMove

php - 如何设置 OpenSSL 以便我可以使用 PHP vis Gmail SMTP 发送邮件?

delphi - 十六进制转二进制