【问题标题】:How can I use SMTP Amazon SES with Delphi?如何将 SMTP Amazon SES 与 Delphi 一起使用?
【发布时间】:2013-03-13 17:46:44
【问题描述】:
【问题讨论】:
标签:
delphi
smtp
indy
amazon-ses
【解决方案1】:
在连接到服务器之前,您需要将启用 SSL 的TIdIOHandler 组件(例如TIdSSLIOHandlerSocketOpenSSL)分配给TIdSMTP.IOHandler 属性,并将TIdSMTP.UseEHLO 属性设置为True。然后,您有两种选择来配置 TLS 设置:
将TIdSMTP.UseTLS 属性设置为utUseExplicitTLS,然后将TIdSMTP.Port 属性设置为25、587 或2587(SES 上的所有三个端口都支持utUseExplicitTLS)。
将TIdSMTP.UseTLS 属性设置为utUseImplicitTLS,然后将TIdSMTP.Port 属性设置为465 或2465(SES 上的两个端口都支持utUseImplicitTLS)。
UseTLS 值之间的区别在于 utUseExplicitTLS 将连接到最初未加密的服务器,然后在需要时向服务器发送 SMTP STARTTLS 命令以启用加密,而 utUseImplicitTLS 将连接到服务器并在可以交换任何与 SMTP 相关的数据之前立即启用加密。
亚马逊建议验证服务器的 TLS 证书以验证连接的完整性。您可以在TIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode 属性中启用sslvrfPeer 和sslvrfFailIfNoPeerCert 标志,然后根据需要使用TIdSSLIOHandlerSocketOpenSSL.OnVerifyPeer 事件来验证证书详细信息。