如何在Delphi中使用SMTP Amazon SES



我有一个Delphi应用程序,使用Indy IdSMTP对象向智能主机发送电子邮件。

我想使用Amazon SES服务,带有SMTP接口。根据http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html,我需要使用TLS连接。

我不确定我应该为IdSMTP对象UseTLS属性使用哪个值,然后应该在IOHandler中指定什么。

是否有一个直接的方法来使用亚马逊SES在Delphi?现在我想能够只发送文本电子邮件消息,但在未来我可能需要发送HTML电子邮件消息。

在连接服务器前,需要将已启用ssl的TIdIOHandler组件(如TIdSSLIOHandlerSocketOpenSSL)设置为TIdSMTP.IOHandler属性,并将TIdSMTP.UseEHLO属性设置为True。然后,您有两种选择来配置TLS设置:

  1. 设置TIdSMTP.UseTLS属性为utUseExplicitTLS,然后设置TIdSMTP.Port属性为25,587或2587 (SES上所有三个端口都支持utUseExplicitTLS)。

  2. 设置TIdSMTP.UseTLS属性为utUseImplicitTLS,然后设置TIdSMTP.Port属性为465或2465 (SES的两个端口都支持utUseImplicitTLS)。

UseTLS值之间的区别在于utUseExplicitTLS将最初未加密地连接到服务器,然后在需要时向服务器发送SMTP STARTTLS命令以启用加密,而utUseImplicitTLS将在任何与SMTP相关的数据可以交换之前立即连接到服务器并启用加密。

Amazon建议验证服务器的TLS证书以验证连接的完整性。您可以在TIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode属性中启用sslvrfPeersslvrfFailIfNoPeerCert标志,然后根据需要使用TIdSSLIOHandlerSocketOpenSSL.OnVerifyPeer事件验证证书详细信息。

相关内容

  • 没有找到相关文章

最新更新