如何在Delphi中使用SMTP Amazon SES?

时间:2013-03-13 17:46:44

标签: delphi smtp indy amazon-ses

我有一个Delphi应用程序,它使用Indy IdSMTP对象向smarthost发送电子邮件。

我想使用带有SMTP界面的Amazon SES服务。根据{{​​3}},我需要使用TLS连接。

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

在Delphi中使用Amazon SES有直接的方法吗?目前我希望能够只发送短信,但将来我可能需要发送HTML电子邮件。

1 个答案:

答案 0 :(得分:6)

在连接到服务器之前,您需要将一个启用SSL的TIdIOHandler组件(例如TIdSSLIOHandlerSocketOpenSSL)分配给TIdSMTP.IOHandler属性,并设置TIdSMTP.UseEHLO属性真的。然后,您有两种配置TLS设置的选择:

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

  2. utUseExplicitTLS属性设置为TIdSMTP.UseTLS,然后将utUseImplicitTLS属性设置为465或2465(SES支持TIdSMTP.Port上的两个端口)。< / p>

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

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