Testen der Verbindung zur Amazon-SES-SMTP-Schnittstelle über die Befehlszeile - Amazon Simple Email Service

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:587

    Ersetzen 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:465

    Ersetzen 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 -ComputerName email-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 Sie 587 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
  1. Geben Sie den folgenden Befehl in die Befehlszeile ein, um Ihren SMTP-Benutzernamen zu kodieren. Geben Sie dabei anstelle von SMTPUsername Ihren SMTP-Benutzernamen ein:

    echo -n "SMTPUsername" | openssl enc -base64

    Notieren Sie sich die Ausgabe dieses Befehls.

  2. Geben Sie den folgenden Befehl in die Befehlszeile ein, um Ihr SMTP-Passwort zu kodieren. Geben Sie dabei anstelle von SMTPPassword Ihr SMTP-Passwort ein:

    echo -n "SMTPPassword" | openssl enc -base64

    Notieren Sie sich die Ausgabe dieses Befehls.

  3. Erstellen Sie in einem Texteditor eine neue Datei. Fügen Sie folgenden Code in die Datei ein:

    EHLO example.com AUTH LOGIN Base64EncodedSMTPUserName 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
  4. 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.

  5. 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

    Ersetzenemail-smtp.us-west-2.amazonaws.comMit 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
  1. 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 } SendTestEmail

    Wenn Sie fertig sind, speichern Sie die Datei unter SendEmail.ps1.

  2. 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.

    • Ersetzenemail-smtp.us-west-2.amazonaws.comMit der URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region: Weitere Informationen finden Sie unter Regionen und Amazon SES.

  3. 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.

  4. 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
  1. 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 } SendTestEmail

    Wenn Sie fertig sind, speichern Sie die Datei unter SendEmail.ps1.

  2. 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.

    • Ersetzenemail-smtp.us-west-2.amazonaws.comMit der URL des Amazon SES SMTP-Endpunkts für Ihre AWS-Region: Weitere Informationen finden Sie unter Regionen und Amazon SES.

  3. 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.

  4. Wenn Sie dazu aufgefordert werden, geben Sie Ihren SMTP-Benutzernamen und Ihr Passwort ein.