本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用命令列測試您與 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
-ComputerNameemail-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 介面從命令列傳送電子郵件
-
在命令列中輸入下列項目並取代
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 -
在每個變數的提示中,輸入您的值。
-
-
若要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
-
在文字編輯器中,建立新檔案。將以下程式碼貼到檔案:
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
。 -
對您在前述步驟中建立的檔案進行下列變更:
-
Replace (取代)
sender@example.com
您要傳送訊息的電子郵件地址。 -
Replace (取代)
recipient@example.com
您要傳送訊息的電子郵件地址。 -
Replace (取代)
email-smtp.us-west-2.amazonaws.com
使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES。
-
-
在 中 PowerShell,輸入下列命令:
.\
path\to\SendEmail.ps1
在上述命令中,取代
path\to\SendEmail.ps1
以及您在步驟 1 中建立之檔案的路徑。 -
出現提示時,輸入您的SMTP使用者名稱和密碼。
或者,您可以使用 System.Web.Mail.SmtpMail
類別,SSL透過連接埠 465 使用隱含傳送電子郵件。 注意
System.Web.Mail.SmtpMail
類別已正式淘汰,且 Microsoft 建議您使用第三方程式庫。此程式碼僅供測試使用,不應用於生產環境工作負載。PowerShell 使用隱含 傳送電子郵件 SSL
-
在文字編輯器中,建立新檔案。將以下程式碼貼到檔案:
[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
。 -
對您在前述步驟中建立的檔案進行下列變更:
-
Replace (取代)
sender@example.com
您要傳送訊息的電子郵件地址。 -
Replace (取代)
recipient@example.com
您要傳送訊息的電子郵件地址。 -
Replace (取代)
email-smtp.us-west-2.amazonaws.com
使用您 AWS 區域的 Amazon SESSMTP端點URL的 。如需詳細資訊,請參閱區域和 Amazon SES。
-
-
在 中 PowerShell,輸入下列命令:
.\
path\to\SendEmail.ps1
在上述命令中,取代
path\to\SendEmail.ps1
以及您在步驟 1 中建立之檔案的路徑。 -
出現提示時,輸入您的SMTP使用者名稱和密碼。
-