Programmgesteuertes Senden von E-Mails über die Amazon-Oberfläche SES SMTP - Amazon Simple Email Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Programmgesteuertes Senden von E-Mails über die Amazon-Oberfläche SES SMTP

Um eine E-Mail über die SES SMTP Amazon-Oberfläche zu senden, können Sie eine SMTP -fähige Programmiersprache, einen E-Mail-Server oder eine Anwendung verwenden. Bevor Sie beginnen, führen Sie die Aufgaben in Amazon Simple Email Service einrichten durch. Außerdem benötigen Sie die folgenden zusätzlichen Informationen:

Codebeispiele

Sie können auf die SES SMTP Amazon-Oberfläche zugreifen, indem Sie eine SMTP -fähige Programmiersprache verwenden. Sie geben den SES SMTP Amazon-Hostnamen und die Portnummer zusammen mit Ihren SMTP Anmeldeinformationen an und verwenden dann die generischen SMTP Funktionen der Programmiersprache, um die E-Mail zu senden.

Amazon Elastic Compute Cloud (AmazonEC2) schränkt den E-Mail-Verkehr über Port 25 standardmäßig ein. Um Timeouts beim Senden von E-Mails über den SMTP Endpunkt von Amazon zu vermeidenEC2, können Sie beantragen, dass diese Einschränkungen aufgehoben werden. Weitere Informationen finden Sie unter Wie entferne ich die Beschränkung für Port 25 aus meiner EC2 Amazon-Instance oder AWS Lambda -Funktion? im AWS Knowledge Center.

Die Codebeispiele in diesem Abschnitt beziehen sich auf Java und PHP verwenden Port 587, um dieses Problem zu vermeiden.

Anmerkung

In diesem Tutorial senden Sie eine E-Mail an sich selbst, um zu prüfen, ob diese bei Ihnen ankommt. Verwenden Sie für weitere Experimente oder Auslastungstests den SES Amazon-Postfachsimulator. E-Mails, die Sie an den Postfachsimulator senden, zählen nicht zu Ihrer Sendequote oder Ihre Unzustellbarkeits- und Beschwerderate. Weitere Informationen finden Sie unter Manuelles Verwenden des Postfachsimulators.

Wählen Sie eine Programmiersprache aus, um das Beispiel für diese Sprache anzuzeigen:

Warnung

Amazon empfiehlt SES nicht, statische Anmeldeinformationen zu verwenden. Unter erfahren AWS Secrets ManagerSie, wie Sie Ihre Sicherheitslage verbessern können, indem Sie hartcodierte Anmeldeinformationen aus Ihrem Quellcode entfernen. Dieses Tutorial dient nur zum Testen der SES SMTP Amazon-Schnittstelle in einer Nicht-Produktionsumgebung.

Java

In diesem Beispiel werden Eclipse IDE und die verwendet JavaMail API, um E-Mails über Amazon SES über die SMTP Schnittstelle zu senden.

Führen Sie erst die unter Amazon Simple Email Service einrichten beschriebenen Aufgaben aus, bevor Sie mit dem folgenden Verfahren beginnen.

Um eine E-Mail über die SES SMTP Amazon-Schnittstelle mit Java zu senden
  1. Rufen Sie in einem Webbrowser die JavaMail GitHub Seite auf. Wählen Sie unter Assets die Option javax.mail.jar aus, um die neueste Version von herunterzuladen. JavaMail

    Wichtig

    Für dieses Tutorial ist Version 1.5 oder höher erforderlich JavaMail . Diese Verfahren wurden mit JavaMail Version 1.6.1 getestet.

  2. Rufen Sie in einem Webbrowser die GitHub Jakarta-Aktivierungsseite auf und laden Sie unter JavaBeans Activation Framework 1.2.1 Final Release die Datei jakarta.activation.jar herunter

  3. Erstellen Sie ein Projekt in Eclipse, indem Sie die folgenden Schritte ausführen:

    1. Starten Sie Eclipse.

    2. Wählen Sie in Eclipse die Optionen File (Datei), New (Neu) und dann Java Project (Java–Projekt) aus.

    3. Geben Sie im Dialogfeld Create a Java Project (Ein Java-Projekt erstellen) einen Projektnamen ein und klicken Sie auf Next (Weiter).

    4. Wählen Sie im Dialogfeld Java Settings (Java-Einstellungen) die Registerkarte Libraries (Bibliotheken) aus.

    5. Wählen Sie Classpath aus und fügen Sie die beiden externen JAR-Dateien javax.mail.jar und jakarta.activation.jar hinzu, indem Sie auf die Schaltfläche External hinzufügen klicken. JARs

    6. Wählen Sie Extern JARs hinzufügen.

    7. Navigieren Sie zu dem Ordner, in den Sie die Datei heruntergeladen haben JavaMail. Wählen Sie die Datei javax.mail.jar und dann Open (Öffnen) aus.

    8. Klicken Sie im Dialogfeld Java Settings (Java-Einstellungen) auf Finish (Abschließen).

  4. Erweitern Sie im Eclipse-Fenster Package Explorer (Paket-Explorer) das Projekt.

  5. Klicken Sie unter Ihrem Projekt mit der rechten Maustaste auf das Verzeichnis src und wählen Sie New (Neu) und dann Class (Klasse) aus.

  6. Geben Sie im Dialogfeld New Java Class (Neue Java-Klasse) im Feld Name die Zeichenfolge AmazonSESSample ein und klicken Sie auf Finish (Abschließen).

  7. Ersetzen Sie den gesamten Inhalt von A mazonSESSample .java durch den folgenden Code:

    import java.util.Properties; import javax.mail.Message; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class AmazonSESSample { // Replace sender@example.com with your "From" address. // This address must be verified. static final String FROM = "sender@example.com"; static final String FROMNAME = "Sender Name"; // Replace recipient@example.com with a "To" address. If your account // is still in the sandbox, this address must be verified. static final String TO = "recipient@example.com"; // Replace smtp_username with your Amazon SES SMTP user name. static final String SMTP_USERNAME = "smtp_username"; // The name of the Configuration Set to use for this message. // If you comment out or remove this variable, you will also need to // comment out or remove the header below. static final String CONFIGSET = "ConfigSet"; // Amazon SES SMTP host name. This example uses the US West (Oregon) region. // See https://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html#region-endpoints // for more information. static final String HOST = "email-smtp.us-west-2.amazonaws.com"; // The port you will connect to on the Amazon SES SMTP endpoint. static final int PORT = 587; static final String SUBJECT = "Amazon SES test (SMTP interface accessed using Java)"; static final String BODY = String.join( System.getProperty("line.separator"), "<h1>Amazon SES SMTP Email Test</h1>", "<p>This email was sent with Amazon SES using the ", "<a href='https://github.com/javaee/javamail'>Javamail Package</a>", " for <a href='https://www.java.com'>Java</a>." ); public static void main(String[] args) throws Exception { // Create a Properties object to contain connection configuration information. Properties props = System.getProperties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.port", PORT); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.auth", "true"); // Create a Session object to represent a mail session with the specified properties. Session session = Session.getDefaultInstance(props); // Create a message with the specified information. MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(FROM,FROMNAME)); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO)); msg.setSubject(SUBJECT); msg.setContent(BODY,"text/html"); // Add a configuration set header. Comment or delete the // next line if you are not using a configuration set msg.setHeader("X-SES-CONFIGURATION-SET", CONFIGSET); // Create a transport. Transport transport = session.getTransport(); // Get the password String SMTP_PASSWORD = fetchSMTPPasswordFromSecureStorage(); // Send the message. try { System.out.println("Sending..."); // Connect to Amazon SES using the SMTP username and password you specified above. transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD); // Send the email. transport.sendMessage(msg, msg.getAllRecipients()); System.out.println("Email sent!"); } catch (Exception ex) { System.out.println("The email was not sent."); System.out.println("Error message: " + ex.getMessage()); } finally { // Close and terminate the connection. transport.close(); } } static String fetchSMTPPasswordFromSecureStorage() { /* IMPLEMENT THIS METHOD */ // For example, you might fetch it from a secure location or AWS Secrets Manager: https://aws.amazon.com/secrets-manager/ } }
  8. Ersetzen Sie in A mazonSESSample .java die folgenden E-Mail-Adressen durch Ihre eigenen Werte:

    Wichtig

    Bei den E-Mail-Adressen ist die Groß-/Kleinschreibung nicht relevant. Vergewissern Sie sich, dass die Adressen exakt mit denen übereinstimmen, die Sie verifiziert haben.

    • sender@example.com — Ersetze es durch deine „Von“ -E-Mail-Adresse. Sie müssen diese Adresse verifizieren, bevor Sie das Programm ausführen. Weitere Informationen finden Sie unter Verifizierte Identitäten in Amazon SES.

    • recipient@example.com — Ersetze es durch deine „An“ -E-Mail-Adresse. Wenn sich Ihr Konto noch in der Sandbox befindet, müssen Sie diese Adresse verifizieren, bevor Sie sie verwenden. Weitere Informationen finden Sie unter Produktionszugriff anfordern (Verlassen der SES Amazon-Sandbox).

  9. Ersetzen Sie in mazonSESSample A.java Folgendes durch Ihre eigenen Werte:

    • smtp_username — Ersetzen Sie es durch Ihre Anmeldeinformationen SMTP für Ihren Benutzernamen. Beachten Sie, dass es sich bei Ihrem SMTP Benutzernamen um eine 20-stellige Zeichenfolge aus Buchstaben und Zahlen handelt, nicht um einen verständlichen Namen.

    • smtp_password — Implementieren, um das Passwort `fetchSMTPPasswordFromSecureStorage` abzurufen.

  10. (Optional) Wenn Sie einen SES SMTP Amazon-Endpunkt in einem AWS-Region anderen verwenden möchten als email-smtp.us-west-2.amazonaws.com, ändern Sie den Wert der Variablen HOST auf den Endpunkt, den Sie verwenden möchten. Eine Liste der Regionen, in denen Amazon verfügbar SES ist, finden Sie unter Amazon Simple Email Service (AmazonSES) in der Allgemeine AWS-Referenz.

  11. (Optional) Wenn Sie beim Senden dieser E-Mail einen Konfigurationssatz verwenden möchten, ändern Sie den Wert der Variablen ConfigSet in den Namen des Konfigurationssatzes. Weitere Informationen zu Konfigurationssätzen finden Sie unter Verwenden von Konfigurationssätzen in Amazon SES.

  12. Speichern Sie mazonSESSample A.java.

  13. Wählen Sie Project (Projekt) und dann Build Project (Projekt entwickeln) aus. (Falls diese Option deaktiviert ist, kann die automatische Erstellung aktiviert sein.)

  14. Wählen Sie Run (Ausführen) und dann erneut Run (Ausführen) aus, um das Programm zu starten und die E-Mail zu senden.

  15. Überprüfen Sie die Ausgabe. Wenn die E-Mail erfolgreich gesendet wurde, zeigt die Konsole „E-Mail gesendet!“ Andernfalls wird eine Fehlermeldung angezeigt.

  16. Melden Sie sich am E-Mail-Client der Empfängeradresse an. Sie finden die Nachricht, die Sie gesendet haben.

PHP

In diesem Beispiel wird die PHPMailer Klasse verwendet, um E-Mails über Amazon SES über die SMTP Schnittstelle zu senden.

Bevor Sie das folgende Verfahren ausführen, müssen Sie den Vorgang in Amazon Simple Email Service einrichten abschließen. Zusätzlich zur Einrichtung von Amazon müssen SES Sie die folgenden Voraussetzungen für das Senden von E-Mails mit erfüllenPHP:

Voraussetzungen:
  • Installieren PHP — PHP ist unter http://php.net/downloads.php verfügbar. Fügen Sie nach der Installation PHP den Pfad zu PHP Ihren Umgebungsvariablen hinzu, sodass Sie PHP von jeder Befehlszeile aus starten können.

  • Installieren Sie den Composer-Abhängigkeitsmanager — Nachdem Sie den Composer-Abhängigkeitsmanager installiert haben, können Sie die PHPMailer Klasse und ihre Abhängigkeiten herunterladen und installieren. Folgen Sie den Installationsanweisungen unter https://getcomposer.org/download, um Composer zu installieren.

  • PHPMailerKlasse installieren — Führen Sie nach der Installation von Composer den folgenden Befehl aus, um die Klasse zu installieren: PHPMailer

    path/to/composer require phpmailer/phpmailer

    Ersetzen Sie im vorherigen Befehl path/to/ durch den Pfad, in dem Sie Composer installiert haben.

Um eine E-Mail über die SES SMTP Amazon-Oberfläche zu senden mit PHP
  1. Erstellen Sie eine Datei mit dem Namen amazon-ses-smtp-sample.php. Öffnen Sie die Datei mit einem Texteditor und fügen Sie folgenden Code ein:

    <?php // Import PHPMailer classes into the global namespace // These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // If necessary, modify the path in the require statement below to refer to the // location of your Composer autoload.php file. require 'vendor/autoload.php'; // Replace sender@example.com with your "From" address. // This address must be verified with Amazon SES. $sender = 'sender@example.com'; $senderName = 'Sender Name'; // Replace recipient@example.com with a "To" address. If your account // is still in the sandbox, this address must be verified. $recipient = 'recipient@example.com'; // Replace smtp_username with your Amazon SES SMTP user name. $usernameSmtp = 'smtp_username'; // Specify a configuration set. If you do not want to use a configuration // set, comment or remove the next line. $configurationSet = 'ConfigSet'; // If you're using Amazon SES in a region other than US West (Oregon), // replace email-smtp.us-west-2.amazonaws.com with the Amazon SES SMTP // endpoint in the appropriate region. $host = 'email-smtp.us-west-2.amazonaws.com'; $port = 587; // The subject line of the email $subject = 'Amazon SES test (SMTP interface accessed using PHP)'; // The plain-text body of the email $bodyText = "Email Test\r\nThis email was sent through the Amazon SES SMTP interface using the PHPMailer class."; // The HTML-formatted body of the email $bodyHtml = '<h1>Email Test</h1> <p>This email was sent through the <a href="https://aws.amazon.com/ses">Amazon SES</a> SMTP interface using the <a href="https://github.com/PHPMailer/PHPMailer"> PHPMailer</a> class.</p>'; $mail = new PHPMailer(true); try { // Specify the SMTP settings. $mail->isSMTP(); $mail->setFrom($sender, $senderName); $mail->Username = $usernameSmtp; $mail->Password = fetchSMTPPasswordFromSecureStorage(); $mail->Host = $host; $mail->Port = $port; $mail->SMTPAuth = true; $mail->SMTPSecure = 'tls'; $mail->addCustomHeader('X-SES-CONFIGURATION-SET', $configurationSet); // Specify the message recipients. $mail->addAddress($recipient); // You can also add CC, BCC, and additional To recipients here. // Specify the content of the message. $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $bodyHtml; $mail->AltBody = $bodyText; $mail->Send(); echo "Email sent!" , PHP_EOL; } catch (phpmailerException $e) { echo "An error occurred. {$e->errorMessage()}", PHP_EOL; //Catch errors from PHPMailer. } catch (Exception $e) { echo "Email not sent. {$mail->ErrorInfo}", PHP_EOL; //Catch errors from Amazon SES. } function fetchSMTPPasswordFromSecureStorage() { /* IMPLEMENT THIS METHOD */ // For example, you might fetch it from a secure location or AWS Secrets Manager: https://aws.amazon.com/secrets-manager/ } ?>
  2. Ersetzen Sie in amazon-ses-smtp-sample.php Folgendes durch Ihre eigenen Werte:

    • sender@example.com — Ersetzen Sie durch eine E-Mail-Adresse, die Sie bei Amazon verifiziert habenSES. Weitere Informationen finden Sie unter Verifizierte Identitäten. Bei E-Mail-Adressen bei Amazon wird zwischen Groß- und Kleinschreibung SES unterschieden. Stellen Sie sicher, dass die von Ihnen eingegebene Adresse exakt mit der verifizierten Adresse übereinstimmt.

    • recipient@example.com — Durch die Adresse des Empfängers ersetzen. Wenn sich Ihr Konto noch in der Sandbox befindet, müssen Sie diese Adresse verifizieren, bevor Sie sie verwenden. Weitere Informationen finden Sie unter Produktionszugriff anfordern (Verlassen der SES Amazon-Sandbox). Stellen Sie sicher, dass die von Ihnen eingegebene Adresse exakt mit der verifizierten Adresse übereinstimmt.

    • smtp_username — Ersetzen Sie es durch Ihre SMTP Benutzernamen-Anmeldeinformationen, die Sie auf der SMTPEinstellungsseite der SES Amazon-Konsole abgerufen haben. Dieser Benutzername ist nicht mit Ihrer AWS -Zugriffsschlüssel-ID identisch. Beachten Sie, dass es sich bei Ihrem SMTP Benutzernamen um eine 20-stellige Zeichenfolge aus Buchstaben und Zahlen handelt, nicht um einen verständlichen Namen.

    • smtp_password — Implementieren, um das Passwort `fetchSMTPPasswordFromSecureStorage` abzurufen.

    • (Optional) ConfigSet — Wenn Sie beim Senden dieser E-Mail einen Konfigurationssatz verwenden möchten, ersetzen Sie diesen Wert durch den Namen des Konfigurationssatzes. Weitere Informationen zu Konfigurationssätzen finden Sie unter Verwenden von Konfigurationssätzen in Amazon SES.

    • (Optional) email-smtp.us-west-2.amazonaws.com — Wenn Sie einen SES SMTP Amazon-Endpunkt in einer anderen Region als USA West (Oregon) verwenden möchten, ersetzen Sie diesen durch den SES SMTP Amazon-Endpunkt in der Region, die Sie verwenden möchten. Eine Liste der SMTP Endpunkte, URLs auf AWS-Regionen denen Amazon verfügbar SES ist, finden Sie unter Amazon Simple Email Service (AmazonSES) in der Allgemeine AWS-Referenz.

  3. Speichern Sie die amazon-ses-smtp-sampleDatei .php.

  4. Um das Programm auszuführen, öffnen Sie eine Eingabeaufforderung im selben Verzeichnis wie amazon-ses-smtp-sample.php und geben Sie dann Folgendes ein. php amazon-ses-smtp-sample.php

  5. Überprüfen Sie die Ausgabe. Wenn die E-Mail erfolgreich gesendet wurde, zeigt die Konsole „E-Mail gesendet!“ Andernfalls wird eine Fehlermeldung angezeigt.

  6. Melden Sie sich am E-Mail-Client der Empfängeradresse an. Sie finden die Nachricht, die Sie gesendet haben.