Testen der Verbindung zur Amazon-SES-SMTP-Schnittstelle über die Befehlszeile
Die in diesem Abschnitt beschriebenen Methoden dienen dazu, Ihre Verbindung zum Amazon-SES-SMTP-Endpunkt zu testen, Ihre SMTP-Anmeldeinformationen zu überprüfen und Verbindungsprobleme zu beheben. Diese Verfahren verwenden Tools und Bibliotheken, die in den gängigsten Betriebssystemen enthalten sind.
Zusätzliche Hinweise zur Behebung von SMTP-Verbindungsproblemen finden Sie unter SMTP-Probleme bei Amazon SES.
Voraussetzungen
Wenn Sie eine Verbindung mit der Amazon-SES-SMTP-Schnittstelle herstellen, müssen Sie einen Satz von SMTP-Anmeldeinformationen angeben. Ihre SMTP-Anmeldeinformationen sind nicht mit den AWS-Standardanmeldeinformationen identisch. Die beiden Arten von Anmeldeinformationen sind nicht austauschbar. Weitere Informationen zum Abrufen Ihrer SMTP-Anmeldeinformationen finden Sie unter Abrufen Ihrer Amazon-SES-SMTP-Anmeldeinformationen.
Testen Ihrer Amazon SES SMTP-Schnittstellenverbindung
Sie können die Befehlszeile verwenden, um Ihre Verbindung zur Amazon-SES-SMTP-Schnittstelle zu testen, ohne sich zu authentifizieren oder Nachrichten zu senden. Dieses Verfahren ist nützlich für die Behebung grundlegender Verbindungsprobleme. Falls Ihre Testverbindung fehlschlägt, finden Sie weitere Informationen unter.
Dieser Abschnitt enthält Verfahren zum Testen der Verbindungen, sowohl mit OpenSSL (das in den meisten Linux-, macOS- und Unix-Distributionen enthalten ist und auch für Windows erhältlich ist) als auch mit dem Cmdlet Test-NetConnection
in PowerShell (das in den neuesten Versionen von Windows enthalten ist).
- Linux, macOS, or Unix
-
Es gibt zwei Möglichkeiten, mit OpenSSL eine Verbindung zur Amazon-SES-SMTP-Schnittstelle herzustellen: mithilfe von explizitem SSL über Port 587 oder mithilfe von implizitem SSL über Port 465.
So stellen Sie eine Verbindung mit der SMTP-Schnittstelle über explizites SSL her:
-
Geben Sie an der Befehlszeile den folgenden Befehl ein, um eine Verbindung mit dem Amazon SES-SMTP-Server herzustellen:
openssl s_client -crlf -quiet -starttls smtp -connect
email-smtp.us-west-2.amazonaws.com
:587Ersetzen Sie im vorherigen Befehl
email-smtp.us-west-2.amazonaws.com
durch die Adresse des Amazon SES-SMTP-Endpunkts, den Sie für die AWS Region verwenden möchten. Weitere Informationen finden Sie unter Regionen und Amazon SES.Wenn die Verbindung erfolgreich hergestellt wurde, sehen Sie in etwa die folgende Ausgabe:
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
Die Verbindung wird nach ca. 10 Sekunden Inaktivität automatisch geschlossen.
Alternativ können Sie implizites SSL verwenden, um über Port 465 eine Verbindung mit der SMTP-Schnittstelle herzustellen.
So stellen Sie eine Verbindung mit der SMTP-Schnittstelle über implizites SSL her:
-
Geben Sie an der Befehlszeile den folgenden Befehl ein, um eine Verbindung mit dem Amazon SES-SMTP-Server herzustellen:
openssl s_client -crlf -quiet -connect
email-smtp.us-west-2.amazonaws.com
:465Ersetzen Sie im vorherigen Befehl
email-smtp.us-west-2.amazonaws.com
durch die Adresse des Amazon SES-SMTP-Endpunkts, den Sie für die AWS Region verwenden möchten. Weitere Informationen finden Sie unter Regionen und Amazon SES.Wenn die Verbindung erfolgreich hergestellt wurde, sehen Sie in etwa die folgende Ausgabe:
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
Die Verbindung wird nach ca. 10 Sekunden Inaktivität automatisch geschlossen.
-
- PowerShell
-
Sie können das Test-NetConnection-Cmdlet
in PowerShell verwenden, um eine Verbindung mit dem Amazon-SES-SMTP-Server herzustellen. Anmerkung Das
Test-NetConnection
-Cmdlet kann bestimmen, ob der Computer eine Verbindung zum Amazon-SES-SMTP-Endpunkt herstellen kann. Es wird jedoch nicht getestet, ob Ihr Computer eine implizite oder explizite SSL-Verbindung zum SMTP-Endpunkt herstellen kann. Um eine SSL-Verbindung zu testen, können Sie entweder OpenSSL für Windows installieren oder das Verfahren in Verwenden der Befehlszeile zum Senden von E-Mails mithilfe der Amazon-SES-SMTP-Schnittstelle ausführen, um eine Test-E-Mail-Nachricht zu senden.So stellen Sie eine Verbindung mit der SMTP-Schnittstelle über das
Test-NetConnection
-Cmdlet her:-
Geben Sie im PowerShell den folgenden Befehl ein, um eine Verbindung mit dem Amazon-SES-SMTP-Server herzustellen:
Test-NetConnection -Port
587
-ComputerNameemail-smtp.us-west-2.amazonaws.com
Ersetzen Sie
email-smtp.us-west-2.amazonaws.com
im vorherigen Befehl durch die URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region und ersetzen Sie587
durch die Portnummer. Für weitere Informationen zu regionsspezifischen Endpunkten für Amazon SES sehen Sie Regionen und Amazon SES.Wenn die Verbindung erfolgreich war, sehen Sie eine Ausgabe, die dem folgenden Beispiel ähnelt:
ComputerName : email-smtp.us-west-2.amazonaws.com RemoteAddress : 198.51.100.126 RemotePort : 587 InterfaceAlias : Ethernet SourceAddress : 203.0.113.46 TcpTestSucceeded : True
-
Verwenden der Befehlszeile zum Senden von E-Mails mithilfe der Amazon-SES-SMTP-Schnittstelle
Sie können auch die Befehlszeile verwenden, um Nachrichten mithilfe der Amazon-SES-SMTP-Schnittstelle zu senden. Dieses Verfahren ist nützlich, um SMTP-Anmeldeinformationen zu testen und zu überprüfen, ob bestimmte Empfänger Nachrichten empfangen können, die Sie mithilfe von Amazon SES senden.
- Linux, macOS, or Unix
-
Wenn ein E-Mail-Absender eine Verbindung zu einem SMTP-Server herstellt, gibt der Client einen Standardsatz von Anfragen aus und der Server beantwortet jede Anfrage mit einer Standardantwort. Diese Reihe von Anfragen und Antworten wird als eine SMTP-Aushandlung bezeichnet. Wenn Sie eine Verbindung mit dem Amazon SES SMTP-Server mithilfe von OpenSSL aufbauen, erwartet der Server eine SMTP-Aushandlung.
Wenn Sie OpenSSL verwenden, um eine Verbindung mit der SMTP-Schnittstelle herzustellen, müssen Sie Ihre SMTP-Anmeldeinformationen mit base64-Kodierung kodieren. Dieser Abschnitt enthält Verfahren zum Kodieren Ihrer Anmeldeinformationen mit base64.
So senden Sie eine E-Mail über die Befehlszeile mittels der SMTP-Schnittstelle
-
Geben Sie den folgenden Befehl in die Befehlszeile ein, um Ihren SMTP-Benutzernamen zu kodieren. Geben Sie dabei anstelle von
Ihren SMTP-Benutzernamen ein:SMTPUsername
echo -n "
SMTPUsername
" | openssl enc -base64Notieren Sie sich die Ausgabe dieses Befehls.
-
Geben Sie den folgenden Befehl in die Befehlszeile ein, um Ihr SMTP-Passwort zu kodieren. Geben Sie dabei anstelle von
Ihr SMTP-Passwort ein:SMTPPassword
echo -n "
SMTPPassword
" | openssl enc -base64Notieren Sie sich die Ausgabe dieses Befehls.
-
Erstellen Sie in einem Texteditor eine neue Datei. Fügen Sie folgenden Code in die Datei ein:
EHLO
example.com
AUTH LOGINBase64EncodedSMTPUserName
Base64EncodedSMTPPassword
MAIL FROM:sender@example.com
RCPT TO:recipient@example.com
DATA X-SES-CONFIGURATION-SET:ConfigSet
From:Sender Name
<sender@example.com
> To:recipient@example.com
Subject: Amazon SES SMTP Test This message was sent using the Amazon SES SMTP interface. . QUIT -
Nehmen Sie die folgenden Änderungen an der im vorherigen Schritt erstellten Datei vor:
-
Ersetzen Sie
example.com
durch Ihre sendende Domäne. -
Ersetzen Sie
Base64EncodedSMTPUserName
durch Ihren base64-kodierten SMTP-Benutzernamen. -
Ersetzen Sie
Base64EncodedSMTPPassword
durch Ihr base64-kodiertes SMTP-Passwort. -
Ersetzen Sie
sender@example.com
durch die E-Mail-Adresse, von der aus Sie senden. Diese Identität muss verifiziert werden. -
Ersetzen Sie
recipient@example.com
durch die E-Mail-Zieladresse. Wenn sich Ihr Amazon-SES-Konto noch in der Sandbox befindet, muss diese Adresse verifiziert werden. -
Ersetzen Sie
ConfigSet
durch den Namen des Konfigurationssatzes, den Sie beim Senden dieser E-Mail verwenden möchten.Anmerkung Wenn Sie keinen Konfigurationssatz verwenden möchten, können Sie die gesamte Zeile weglassen, die mit
X-SES-CONFIGURATION-SET
beginnt.
Wenn Sie fertig sind, speichern Sie die Datei unter
input.txt
. -
-
Wählen Sie an der Befehlszeile eine der folgenden Optionen aus:
-
Senden mithilfe von explizitem SSL über Port 587 - Geben Sie den folgenden Befehl ein:
openssl s_client -crlf -quiet -starttls smtp -connect
email-smtp.us-west-2.amazonaws.com
:587 < input.txt -
Senden mithilfe von implizitem SSL über Port 465 - Geben Sie den folgenden Befehl ein:
openssl s_client -crlf -quiet -connect
email-smtp.us-west-2.amazonaws.com
:465 < input.txt
Anmerkung Ersetzen
email-smtp.us-west-2.amazonaws.com
Mit der URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region: Weitere Informationen finden Sie unter Regionen und Amazon SES.Wenn die Nachricht von Amazon SES akzeptiert wurde, sehen Sie eine Ausgabe ähnlich dem folgenden Beispiel:
250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000
Die sich an
250 Ok
anschließende Abfolge von Zahlen und Text, ist die Nachrichten-ID der E-Mail.Anmerkung Die Verbindung wird nach ca. 10 Sekunden Inaktivität automatisch geschlossen.
-
-
- PowerShell
-
Sie können die Net.mail.SmtpClient
-Klasse verwenden, um E-Mail-Nachrichten mit explizitem SSL über Port 587 zu senden. Anmerkung Die
Net.Mail.SmtpClient
-Klasse ist offiziell veraltet, und Microsoft empfiehlt, dass Sie Bibliotheken von Drittanbietern verwenden. Dieser Code ist nur für Testzwecke gedacht und sollte nicht für Produktionsarbeitslasten verwendet werden.So senden Sie eine E-Mail-Nachricht über PowerShell mit explizitem SSL
-
Erstellen Sie in einem Texteditor eine neue Datei. Fügen Sie folgenden Code in die Datei ein:
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 } SendTestEmailWenn Sie fertig sind, speichern Sie die Datei unter
SendEmail.ps1
. -
Nehmen Sie die folgenden Änderungen an der im vorherigen Schritt erstellten Datei vor:
-
Ersetzen Sie
sender@example.com
durch die E-Mail-Adresse, von der Sie die Nachricht senden möchten. -
Ersetzen Sie
recipient@example.com
durch die Adresse, an die Sie die Nachricht senden möchten. -
Ersetzen
email-smtp.us-west-2.amazonaws.com
Mit der URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region: Weitere Informationen finden Sie unter Regionen und Amazon SES.
-
-
Sie können auch den folgenden PowerShell-Befehl ausführen.
.\
path\to\SendEmail.ps1
Ersetzen Sie im vorherigen Befehl
path\to\SendEmail.ps1
durch den Pfad zu der Datei, die Sie in Schritt 1 erstellt haben. -
Wenn Sie dazu aufgefordert werden, geben Sie Ihren SMTP-Benutzernamen und Ihr Passwort ein.
Alternativ können Sie die System.Web.Mail.SmtpMail
-Klasse verwenden, um E-Mail-Nachrichten mit implizitem SSL über Port 465 zu senden. Anmerkung Die
System.Web.Mail.SmtpMail
-Klasse ist offiziell veraltet, und Microsoft empfiehlt, dass Sie Bibliotheken von Drittanbietern verwenden. Dieser Code ist nur für Testzwecke gedacht und sollte nicht für Produktionsarbeitslasten verwendet werden.So senden Sie eine E-Mail-Nachricht über PowerShell mit implizitem SSL
-
Erstellen Sie in einem Texteditor eine neue Datei. Fügen Sie folgenden Code in die Datei ein:
[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 } SendTestEmailWenn Sie fertig sind, speichern Sie die Datei unter
SendEmail.ps1
. -
Nehmen Sie die folgenden Änderungen an der im vorherigen Schritt erstellten Datei vor:
-
Ersetzen Sie
sender@example.com
durch die E-Mail-Adresse, von der Sie die Nachricht senden möchten. -
Ersetzen Sie
recipient@example.com
durch die Adresse, an die Sie die Nachricht senden möchten. -
Ersetzen
email-smtp.us-west-2.amazonaws.com
Mit der URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region: Weitere Informationen finden Sie unter Regionen und Amazon SES.
-
-
Sie können auch den folgenden PowerShell-Befehl ausführen.
.\
path\to\SendEmail.ps1
Ersetzen Sie im vorherigen Befehl
path\to\SendEmail.ps1
durch den Pfad zu der Datei, die Sie in Schritt 1 erstellt haben. -
Wenn Sie dazu aufgefordert werden, geben Sie Ihren SMTP-Benutzernamen und Ihr Passwort ein.
-