我有一个Delphi应用程序,它使用Indy IdSMTP对象向smarthost发送电子邮件。
我想使用带有SMTP界面的Amazon SES服务。根据{{3}},我需要使用TLS连接。
我不确定我应该将哪个值用于IdSMTP对象的UseTLS属性,然后应该在IOHandler中指定什么。
在Delphi中使用Amazon SES有直接的方法吗?目前我希望能够只发送短信,但将来我可能需要发送HTML电子邮件。
答案 0 :(得分:6)
在连接到服务器之前,您需要将一个启用SSL的TIdIOHandler
组件(例如TIdSSLIOHandlerSocketOpenSSL
)分配给TIdSMTP.IOHandler
属性,并设置TIdSMTP.UseEHLO
属性真的。然后,您有两种配置TLS设置的选择:
将TIdSMTP.UseTLS
属性设置为utUseExplicitTLS
,然后将TIdSMTP.Port
属性设置为25,587或2587(SES支持{{1}上的所有三个端口})。
将utUseExplicitTLS
属性设置为TIdSMTP.UseTLS
,然后将utUseImplicitTLS
属性设置为465或2465(SES支持TIdSMTP.Port
上的两个端口)。< / p>
utUseImplicitTLS
值之间的区别在于UseTLS
最初未连接将连接到服务器,然后向服务器发送SMTP utUseExplicitTLS
命令以在需要时启用加密,而{STARTTLS
1}}将连接到服务器并立即启用加密,然后才能交换任何与SMTP相关的数据。
亚马逊建议验证服务器的TLS证书以验证连接的完整性。您可以在utUseImplicitTLS
属性中启用sslvrfPeer
和sslvrfFailIfNoPeerCert
标记,然后使用TIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode
事件根据需要验证证书详细信息。