2013-03-13 167 views
0

我有一個Delphi應用程序使用Indy IdSMTP對象將電子郵件發送到智能主機。如何在Delphi中使用SMTP亞馬遜SES?

我想使用Amazon SES服務,使用SMTP接口。根據http://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html,我需要使用TLS連接。

我不知道我應該爲IdSMTP對象UseTLS屬性使用哪個值,然後應該在IOHandler中指定什麼值。

在Delphi中使用Amazon SES有直接的方法嗎?目前我希望能夠僅發送文本電子郵件,但將來我可能需要發送HTML電子郵件。

回答

6

之前連接到服務器,您需要分配啓用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相關的數據。

亞馬遜建議驗證服務器的TLS證書以驗證連接的完整性。您可以啓用TIdSSLIOHandlerSocketOpenSSL.SSLOptions.VerifyMode屬性中的sslvrfPeersslvrfFailIfNoPeerCert標誌,然後根據需要使用TIdSSLIOHandlerSocketOpenSSL.OnVerifyPeer事件驗證證書詳細信息。