【发布时间】:2013-07-18 01:11:59
【问题描述】:
我不熟悉 INDY SMTP 组件。我想用 INDY 和 Office 365 发送邮件。这是一个很好的话题,对我有很大帮助:What do the SMTP Indy component security and authentication properties do? 但是我没有弄清楚如何使用SASL。 Office365 地址是 smtp.office365.com,端口为 587 和 TLS。所以我在表单中添加了一个 SMTP 和一个 OpenSSL-IOHandler 并设置了属性。但我没有工作,应用程序只是冻结。我需要知道如何在 Office365 中使用 SASL。
谢谢。
【问题讨论】:
-
SASL 和 TLS 是完全独立且不相关的东西。 SASL 旨在保护通过连接传输的用户凭据。 TLS 旨在加密连接本身,无论通过它传输什么。那么你真正需要帮助的是什么?使用 TLS 建立到 Office35 的套接字连接,还是在建立连接后使用 SASL 对 Office365 进行身份验证,或者两者兼而有之?请更具体。
-
您没有提供您使用的实际设置,或显示使用
TIdSMTP的实际代码。所以没有办法诊断你的问题。 -
感谢您的帮助。是的,我在这两个方面都需要帮助。此处显示了一个简单的 SMTP 代码 delphi-treff.de/tutorials/netzwerk-und-internet/indy/… 我的代码看起来几乎相同。但我不知道如何正确设置 TLS 和 SASL。对于 TLS,我添加了一个 INDY OpenSSL-IOHandler,将其与 TIdSMTP 链接并将 TLS 设置为 SSL 选项,并在“UseTLS”属性 utUseExplicitTLS 下。还安装了 OpenSSL。但我不知道 Office365 使用了哪些 SASL-Options 以及如何使用 Indy 进行设置。我会发布一些代码。顺便提一句。我是新手,不明白如何使用代码标签...
-
该教程示例未使用 TLS 或 SASL。至于你的代码,不要试图弄清楚要使用哪个 SASL,只需启用它们(或至少是最常用的 - CRAM-MD5、CRAM-SHA1、NTLM 等)并让
TIdSMTP为你决定当TIdSMTP连接到它时,根据Office365 报告的实际功能使用哪个SASL(您必须将TIdSMTP.UseEHLO设置为True 才能工作)。 -
当我在端口 587 上使用
TIdSMTP和TLS=utUseExplicitTLS登录 Office365 时,它可以正常连接而不会冻结,并且它报告支持的唯一 SASL 是LOGIN(LOGIN是不安全,但 TLS 的使用弥补了这一点)。在尝试验证我的凭据时出现了短暂的冻结,但随后它解冻并引发了身份验证错误,正如预期的那样(因为我没有 Office365 帐户)。
标签: delphi smtp indy indy10 office365