Envoi d'e-mails par programmation via l'interface Amazon SES SMTP - Amazon Simple Email Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi d'e-mails par programmation via l'interface Amazon SES SMTP

Pour envoyer un e-mail via l'SESSMTPinterface Amazon, vous pouvez utiliser un langage de programmation, un serveur de messagerie ou une application SMTP compatible. Avant de commencer, complétez les tâches dans Configuration d'Amazon Simple Email Service. Vous aurez également besoin d'obtenir les informations supplémentaires suivantes :

Exemples de code

Vous pouvez accéder à l'SESSMTPinterface Amazon en utilisant un langage de programmation SMTP compatible. Vous fournissez le SES SMTP nom d'hôte et le numéro de port Amazon ainsi que vos SMTP informations d'identification, puis vous utilisez les SMTP fonctions génériques du langage de programmation pour envoyer l'e-mail.

Amazon Elastic Compute Cloud (AmazonEC2) limite le trafic de courrier électronique sur le port 25 par défaut. Pour éviter les délais d'envoi d'e-mails via le SMTP point de terminaison depuis AmazonEC2, vous pouvez demander la suppression de ces restrictions. Pour plus d'informations, consultez Comment supprimer la restriction sur le port 25 de mon EC2 instance Amazon ou AWS Lambda fonction ? dans le AWS Centre de connaissances.

Les exemples de code présentés dans cette section concernent Java et PHP utilisent le port 587 pour éviter ce problème.

Note

Dans ces didacticiels, vous vous envoyez un e-mail afin de vérifier si vous l'avez reçu. Pour d'autres expérimentations ou tests de charge, utilisez le simulateur de SES boîte aux lettres Amazon. Les e-mails envoyés au simulateur de boîte aux lettres ne sont pas pris en compte dans votre quota d'envoi et vos taux de retours à l'expéditeur et de réclamations. Pour plus d'informations, consultez Utilisation manuelle du simulateur de boîte aux lettres.

Sélectionnez un langage de programmation pour afficher l'exemple correspondant à cette langue:

Avertissement

Amazon SES ne recommande pas d'utiliser des informations d'identification statiques. Référez-vous à AWS Secrets Managerpour savoir comment améliorer votre niveau de sécurité en supprimant les informations d'identification codées en dur de votre code source. Ce didacticiel est uniquement fourni dans le but de tester l'SESSMTPinterface Amazon dans un environnement hors production.

Java

Cet exemple utilise l'Eclipse IDE et le JavaMail APIpour envoyer des e-mails via Amazon à SES l'aide de l'SMTPinterface.

Avant d'effectuer la procédure suivante, effectuez les tâches dans Configuration d'Amazon Simple Email Service.

Pour envoyer un e-mail à l'aide de l'SESSMTPinterface Amazon avec Java
  1. Dans un navigateur Web, accédez à la JavaMail GitHub page. Sous Assets, choisissez javax.mail.jar pour télécharger la dernière version de. JavaMail

    Important

    Ce didacticiel nécessite JavaMail la version 1.5 ou ultérieure. Ces procédures ont été testées à l'aide de JavaMail la version 1.6.1.

  2. Dans un navigateur Web, rendez-vous sur la GitHub page d'activation de Jakarta et, sous JavaBeans Activation Framework 1.2.1 Final Release, téléchargez le fichier jakarta.activation.jar

  3. Créez un projet Eclipse en procédant comme suit :

    1. Démarrez Eclipse.

    2. Dans Eclipse, choisissez File (Fichier), New (Nouveau), puis Java Project.

    3. Dans la boîte de dialogue Create a Java Project (Créer un projet Java), saisissez un nom de projet, puis choisissez Next (Suivant).

    4. Dans la boîte de dialogue Java Settings (Paramètres Java), choisissez l'onglet Libraries (Bibliothèques).

    5. Sélectionnez Classpath et ajoutez les deux fichiers jar externes javax.mail.jar et jakarta.activation.jar à l'aide du bouton Ajouter un fichier externe. JARs

    6. Choisissez Ajouter un élément externe JARs.

    7. Accédez au dossier dans lequel vous avez effectué le téléchargement JavaMail. Choisissez le fichier javax.mail.jar, puis Open (Ouvrir).

    8. Dans la boîte de dialogue Java Settings (Paramètres Java), choisissez Finish (Terminer).

  4. Dans la fenêtre Package Explorer (Explorateur de paquets) d'Eclipse, développez votre projet.

  5. Sous votre projet, cliquez avec le bouton droit sur le répertoire src, puis choisissez New (Nouveau) et Class (Classe).

  6. Dans la boîte de dialogue New Java Class (Nouvelle classe Java), dans le champ Name (Nom), entrez AmazonSESSample et choisissez Finish (Terminer).

  7. Remplacez l'intégralité du contenu de A mazonSESSample .java par le code suivant :

    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. Dans A mazonSESSample .java, remplacez les adresses e-mail suivantes par vos propres valeurs :

    Important

    Les adresses e-mail sont sensibles à la casse. Assurez-vous que les adresses sont exactement les mêmes que celles que vous avez vérifiées.

    • sender@example.com — Remplacez par votre adresse e-mail « De ». Vous devez vérifier cette adresse avant d'exécuter ce programme. Pour de plus amples informations, veuillez consulter Identités vérifiées dans Amazon SES.

    • recipient@example.com — Remplacez par votre adresse e-mail « À ». Si votre compte est encore dans l'environnement de test (sandbox), vous devez vérifier cette adresse avant de l'utiliser. Pour de plus amples informations, veuillez consulter Demande d'accès à la production (sortie du SES sandbox Amazon).

  9. Dans un mazonSESSample fichier .java, remplacez les valeurs suivantes par vos propres valeurs :

    • smtp_username — Remplacez par votre identifiant de nom d'SMTPutilisateur. Notez que votre identifiant de nom SMTP d'utilisateur est une chaîne de 20 caractères composée de lettres et de chiffres et qu'il ne s'agit pas d'un nom intelligible.

    • smtp_password`fetchSMTPPasswordFromSecureStorage` Implémente pour récupérer le mot de passe.

  10. (Facultatif) Si vous souhaitez utiliser un point de SES SMTP terminaison Amazon dans un Région AWS autre que email-smtp.us-west-2.amazonaws.com, remplacez la valeur de la variable par le HOST point de terminaison que vous souhaitez utiliser. Pour obtenir la liste des régions dans lesquelles Amazon SES est disponible, consultez Amazon Simple Email Service (AmazonSES) dans le Références générales AWS.

  11. (Facultatif) Si vous souhaitez utiliser un ensemble de configuration lors de l'envoi de cet e-mail, modifiez la valeur de la variable ConfigSet au nom du jeu de configuration. Pour en savoir plus sur les jeux de configurations, consultez Utilisation des ensembles de configuration dans Amazon SES.

  12. Enregistrez un mazonSESSample fichier .java.

  13. Pour créer le projet, choisissez Project (Projet), puis Build Project (Créer un projet). (Si cette option est désactivée, cela peut signifier que la génération automatique est activée.)

  14. Pour démarrer le programme et envoyer l'e-mail, choisissez Run (Exécuter), puis à nouveau Run (Exécuter).

  15. Vérifiez la sortie. Si l'e-mail a été envoyé avec succès, la console affiche « E-mail envoyé ! » Dans le cas contraire, un message d'erreur s'affiche.

  16. Connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.

PHP

Cet exemple utilise la PHPMailer classe pour envoyer des e-mails via Amazon à SES l'aide de l'SMTPinterface.

Avant d'effectuer la procédure suivante, effectuez les tâches dans Configuration d'Amazon Simple Email Service. Outre la configuration d'Amazon, SES vous devez remplir les conditions préalables suivantes pour envoyer un e-mail avec PHP :

Prérequis :
  • Installation PHP — PHP est disponible à l'adresse http://php.net/downloads.php. Après l'installationPHP, ajoutez le chemin d'accès PHP à vos variables d'environnement afin de pouvoir exécuter PHP à partir de n'importe quelle invite de commande.

  • Installation du gestionnaire de dépendances Composer : après avoir installé le gestionnaire de dépendances Composer, vous pouvez télécharger et installer la PHPMailer classe et ses dépendances. Pour installer Composer, suivez les instructions d'installation sur https://getcomposer.org/download.

  • Installer la PHPMailer classe — Après avoir installé Composer, exécutez la commande suivante pour l'installer PHPMailer :

    path/to/composer require phpmailer/phpmailer

    Dans la commande précédente, remplacez path/to/ avec le chemin où vous avez installé Composer.

Pour envoyer un e-mail via l'SESSMTPinterface Amazon avec PHP
  1. Créez un fichier nommé amazon-ses-smtp-sample.php. Ouvrez le fichier dans un éditeur de texte et collez le code suivant :

    <?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. Dans le amazon-ses-smtp-samplefichier .php, remplacez les valeurs suivantes par vos propres valeurs :

    • sender@example.com — Remplacez par une adresse e-mail que vous avez vérifiée auprès d'AmazonSES. Pour de plus amples informations, veuillez consulter Identités vérifiées. Les adresses e-mail d'Amazon SES font la distinction majuscules/majuscules. Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.

    • recipient@example.com — Remplacez par l'adresse du destinataire. Si votre compte est encore dans l'environnement de test (sandbox), vous devez vérifier cette adresse avant de l'utiliser. Pour plus d'informations, consultez Demande d'accès à la production (sortie du SES sandbox Amazon). Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.

    • smtp_username — Remplacez-le par votre nom d'SMTPutilisateur, que vous avez obtenu sur la page SMTPParamètres de la SES console Amazon. Ce n'est pas la même chose que votre AWS ID de clé d'accès. Notez que votre identifiant de nom SMTP d'utilisateur est une chaîne de 20 caractères composée de lettres et de chiffres et qu'il ne s'agit pas d'un nom intelligible.

    • smtp_password`fetchSMTPPasswordFromSecureStorage` Implémente pour récupérer le mot de passe.

    • (Facultatif) ConfigSet — Si vous souhaitez utiliser un ensemble de configuration lors de l'envoi de cet e-mail, remplacez cette valeur par le nom du jeu de configuration. Pour en savoir plus sur les jeux de configurations, consultez Utilisation des ensembles de configuration dans Amazon SES.

    • (Facultatif) email-smtp.us-west-2.amazonaws.com — Si vous souhaitez utiliser un point de SES SMTP terminaison Amazon dans une région autre que l'ouest des États-Unis (Oregon), remplacez-le par le point de SES SMTP terminaison Amazon de la région que vous souhaitez utiliser. Pour obtenir la liste des SMTP points de terminaison URLs pour le Régions AWS où Amazon SES est disponible, consultez Amazon Simple Email Service (AmazonSES) dans le Références générales AWS.

  3. Enregistrez le amazon-ses-smtp-samplefichier .php.

  4. Pour exécuter le programme, ouvrez une invite de commande dans le même répertoire que amazon-ses-smtp-sample.php, puis tapezphp amazon-ses-smtp-sample.php.

  5. Vérifiez la sortie. Si l'e-mail a été envoyé avec succès, la console affiche « E-mail envoyé ! » Dans le cas contraire, un message d'erreur s'affiche.

  6. Connectez-vous au client de messagerie de l'adresse du destinataire. Vous verrez le message que vous avez envoyé.