使用命令列測試您與 Amazon SES SMTP 介面的連線 - Amazon Simple Email Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用命令列測試您與 Amazon SES SMTP 介面的連線

您可以從命令列使用本節中所述的方法,測試您與 Amazon SESSMTP端點的連線、驗證您的SMTP憑證,以及疑難排解連線問題。這些程序使用大多數常見作業系統隨附的工具和程式庫。

如需SMTP連線問題疑難排解的其他資訊,請參閱 Amazon SES SMTP 問題

必要條件

當您連線至 Amazon SES SMTP 介面時,您必須提供一組SMTP憑證。這些SMTP憑證與您的標準 AWS 憑證不同。這兩種憑證類型不可互換。如需取得SMTP憑證的詳細資訊,請參閱 取得 Amazon SESSMTP憑證

測試您與 Amazon SES SMTP 介面的連線

您可以使用命令列來測試與 Amazon SES SMTP 介面的連線,而無需驗證或傳送任何訊息。此程序有助於對基本連線問題進行疑難排解。如果測試連線失敗,請參閱 SMTP 問題

本節包含使用 OpenSSL (包含在大多數 Linux、macOS 和 Unix 發行版本中,也適用於 Windows) 和 Test-NetConnection cmdlet PowerShell (包含在最新版本的 Windows 中) 測試連線的程序。

Linux, macOS, or Unix

有兩種方法可透過 Open 連線至 Amazon SES SMTP 介面SSL:透過連接埠 587 SSL使用顯式,或透過SSL連接埠 465 使用隱式。

使用明確連線至SMTP介面 SSL
  • 在命令列中,輸入下列命令以連線至 Amazon SES SMTP 伺服器:

    openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587

    在上述命令中,取代 email-smtp.us-west-2.amazonaws.com 使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES

    若連線成功,您會看到類似以下的輸出:

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 250 Ok

    閒置 10 秒後連線將自動關閉。

或者,您可以使用隱含 SSL ,透過連接埠 465 連接至SMTP介面。

使用隱含 連線至SMTP介面 SSL
  • 在命令列中,輸入下列命令以連線至 Amazon SES SMTP 伺服器:

    openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    在上述命令中,取代 email-smtp.us-west-2.amazonaws.com 使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES

    若連線成功,您會看到類似以下的輸出:

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0

    閒置 10 秒後連線將自動關閉。

PowerShell

您可以使用 中的 Test-NetConnection cmdlet PowerShell 連線到 Amazon SES SMTP 伺服器。

注意

Test-NetConnection cmdlet 可以判斷您的電腦是否可以連線至 Amazon SESSMTP端點。不過,它不會測試您的電腦是否可以與SMTP端點建立隱含或明確的SSL連線。若要測試SSL連線,您可以安裝 OpenSSL for Windows 以傳送測試電子郵件。

使用 Test-NetConnection cmdlet 連線至SMTP介面
  • 在 中 PowerShell,輸入下列命令以連線至 Amazon SES SMTP 伺服器:

    Test-NetConnection -Port 587 -ComputerName email-smtp.us-west-2.amazonaws.com

    在上述命令中,取代 email-smtp.us-west-2.amazonaws.com 使用您 AWS 區域 Amazon SESSMTP端點URL的 ,並取代 587 使用連接埠號碼。如需 Amazon 中區域端點的詳細資訊SES,請參閱 區域和 Amazon SES

    如果連線成功,您會看到類似以下範例的輸出:

    ComputerName : email-smtp.us-west-2.amazonaws.com RemoteAddress : 198.51.100.126 RemotePort : 587 InterfaceAlias : Ethernet SourceAddress : 203.0.113.46 TcpTestSucceeded : True

使用命令列,使用 Amazon SES SMTP 介面傳送電子郵件

您也可以使用命令列,使用 Amazon SES SMTP 介面傳送訊息。此程序適用於測試SMTP憑證,以及測試特定收件人接收您使用 Amazon 傳送之訊息的能力SES。

Linux, macOS, or Unix

當電子郵件寄件者連線至SMTP伺服器時,用戶端會發出一組標準請求,而伺服器會使用標準回應來回應每個請求。這一系列的請求和回應稱為SMTP對話 。當您使用 Open 連線至 Amazon SES SMTP 伺服器時SSL,伺服器預期對話SMTP會進行。

當您使用 OpenSSL 連線至SMTP介面時,您必須使用 base64 編碼來編碼您的SMTP憑證。本節包含使用 base64 為您的登入資料進行編碼的程序。

使用 SMTP 介面從命令列傳送電子郵件
  1. 在命令列中輸入下列項目並取代 email-smtp.us-west-2.amazonaws.com 使用 Amazon URL SESSMTP端點的 AWS 區域。如需詳細資訊,請參閱 區域和 Amazon SES。:

    #!/bin/bash # Prompt user to provide following information read -p "Configuration set: " CONFIGSET read -p "Enter SMTP username: " SMTPUsername read -p "Enter SMTP password: " SMTPPassword read -p "Sender email address: " MAILFROM read -p "Receiver email address: " RCPT read -p "Email subject: " SUBJECT read -p "Message to send: " DATA echo # Encode SMTP username and password using base64 EncodedSMTPUsername=$(echo -n "$SMTPUsername" | openssl enc -base64) EncodedSMTPPassword=$(echo -n "$SMTPPassword" | openssl enc -base64) # Construct the email Email="EHLO example.com AUTH LOGIN $EncodedSMTPUsername $EncodedSMTPPassword MAIL FROM: $MAILFROM RCPT TO: $RCPT DATA X-SES-CONFIGURATION-SET: $CONFIGSET From: $MAILFROM To: $RCPT Subject: $SUBJECT $DATA . QUIT" echo "$Email" | openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587
  2. 在每個變數的提示中,輸入您的值。

    • 若要SSL透過連接埠 465 使用隱含傳送,請使用:

      openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    如果 Amazon 接受訊息SES,您會看到類似下列範例的輸出:

    250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000

    250 Ok 後方的數字與文字字串為電子郵件的訊息 ID。

    注意

    閒置 10 秒後連線將自動關閉。

PowerShell

您可以使用 Net.Mail.SmtpClient 類別,透過連接埠 587 SSL使用明確方式傳送電子郵件。

注意

Net.Mail.SmtpClient 類別已正式淘汰,且 Microsoft 建議您使用第三方程式庫。此程式碼僅供測試使用,不應用於生產環境工作負載。

PowerShell 使用明確方式傳送電子郵件 SSL
  1. 在文字編輯器中,建立新檔案。將以下程式碼貼到檔案:

    function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) { $Credentials = [Net.NetworkCredential](Get-Credential) $SMTPClient = New-Object Net.Mail.SmtpClient($Server, $Port) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Credentials.Username, $Credentials.Password); try { Write-Output "Sending message..." $SMTPClient.Send($Sender, $Recipient, $Subject, $Body) Write-Output "Message successfully sent to $($Recipient)" } catch [System.Exception] { Write-Output "An error occurred:" Write-Error $_ } } function SendTestEmail(){ $Server = "email-smtp.us-west-2.amazonaws.com" $Port = 587 $Subject = "Test email sent from Amazon SES" $Body = "This message was sent from Amazon SES using PowerShell (explicit SSL, port 587)." $Sender = "sender@example.com" $Recipient = "recipient@example.com" SendEmail $Server $Port $Sender $Recipient $Subject $Body } SendTestEmail

    完成後,請將檔案儲存為 SendEmail.ps1

  2. 對您在前述步驟中建立的檔案進行下列變更:

    • Replace (取代) sender@example.com 您要傳送訊息的電子郵件地址。

    • Replace (取代) recipient@example.com 您要傳送訊息的電子郵件地址。

    • Replace (取代) email-smtp.us-west-2.amazonaws.com 使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES

  3. 在 中 PowerShell,輸入下列命令:

    .\path\to\SendEmail.ps1

    在上述命令中,取代 path\to\SendEmail.ps1 以及您在步驟 1 中建立之檔案的路徑。

  4. 出現提示時,輸入您的SMTP使用者名稱和密碼。

或者,您可以使用 System.Web.Mail.SmtpMail 類別,SSL透過連接埠 465 使用隱含傳送電子郵件。

注意

System.Web.Mail.SmtpMail 類別已正式淘汰,且 Microsoft 建議您使用第三方程式庫。此程式碼僅供測試使用,不應用於生產環境工作負載。

PowerShell 使用隱含 傳送電子郵件 SSL
  1. 在文字編輯器中,建立新檔案。將以下程式碼貼到檔案:

    [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > $null function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) { $Credentials = [Net.NetworkCredential](Get-Credential) $mail = New-Object System.Web.Mail.MailMessage $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", $Server) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", $Port) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", $true) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", $Credentials.UserName) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", $Credentials.Password) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", $timeout / 1000) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2) $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1) $mail.From = $Sender $mail.To = $Recipient $mail.Subject = $Subject $mail.Body = $Body try { Write-Output "Sending message..." [System.Web.Mail.SmtpMail]::Send($mail) Write-Output "Message successfully sent to $($Recipient)" } catch [System.Exception] { Write-Output "An error occurred:" Write-Error $_ } } function SendTestEmail(){ $Server = "email-smtp.us-west-2.amazonaws.com" $Port = 465 $Subject = "Test email sent from Amazon SES" $Body = "This message was sent from Amazon SES using PowerShell (implicit SSL, port 465)." $Sender = "sender@example.com" $Recipient = "recipient@example.com" SendEmail $Server $Port $Sender $Recipient $Subject $Body } SendTestEmail

    完成後,請將檔案儲存為 SendEmail.ps1

  2. 對您在前述步驟中建立的檔案進行下列變更:

    • Replace (取代) sender@example.com 您要傳送訊息的電子郵件地址。

    • Replace (取代) recipient@example.com 您要傳送訊息的電子郵件地址。

    • Replace (取代) email-smtp.us-west-2.amazonaws.com 使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES

  3. 在 中 PowerShell,輸入下列命令:

    .\path\to\SendEmail.ps1

    在上述命令中,取代 path\to\SendEmail.ps1 以及您在步驟 1 中建立之檔案的路徑。

  4. 出現提示時,輸入您的SMTP使用者名稱和密碼。