- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
谁能诊断出我无法使用 Delphi 2010 和 Indy 10.5.5 连接到 smtp.office365.com?
我已经阅读了 Indy 专家 Remy Lebeau 在这个问题中提供的代码示例:Using INDY 10 SMTP with Office365 .
我已经从该问题中提取了两个备用代码示例(一个使用 AuthType satDefault
,另一个使用 satSASL
)并将它们剪切并粘贴到控制台中应用。在每种情况下,运行时都会出现以下错误:
EIdOSSLUnderlyingCryptoError: Error connecting with SSL.
Error connecting with SSL.
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
当我将 UseTLS 更改为 utUseExplicitTLS
时(如其他一些答案中所建议的那样,在尝试 TLS 之前需要纯文本连接)我收到以下错误:
EIdOSSLConnectError: Error connecting with SSL.
Error connecting with SSL.
EOF was observed that violates the protocol
我注意到其他答案中的一些引用设置 SSLOptions.SSLVersions 而不是 SSLOptions.Method(据说已弃用),但在我的 Indy 版本中,TIdSSLIOHandlerSocketOpenSSL 上似乎不存在该属性。
我相信我有 D2010 更新附带的 Indy 版本,但它有点过时了。如果存在新版本,我愿意更新,但似乎无法在不安装 SVN、学习它、从开发中 check out 并重新编译的情况下这样做。
最后,我尝试运行我的控制台应用程序的所有四个变体,可执行目录中不存在 DLL,并且存在来自 OpenSSL v1.0.2h 的 DLL,但没有任何明显效果。
编辑:另一条信息。客户端提供的 SMTP 凭据(该项目通过单个专用出站电子邮件地址发送电子邮件)的格式为 project@myclientsdomain.com
,而不是 @office365
。
最佳答案
显然,自从 Remy 在链接问题中写下答案后,Office365 已停止支持 SSLv3(大概是为了避免已知的漏洞利用),现在需要 TLS。如果您更改这两行,他在原始问题中的回答中的代码将起作用:
idSMTP1.UseTLS := utUseImplicitTLS;
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvSSLv3;
到:
idSMTP1.UseTLS := utUseExplicitTLS;
TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvTLSv1;
关于delphi - 无法通过 Delphi 2010 和 Indy 10.5.5 使用到 Office365 的安全 SMTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38740921/
我是一名优秀的程序员,十分优秀!