Envoi d'un e-mail à l'aide de SMTP avec PHP - Amazon Simple Email Service

Envoi d'un e-mail à l'aide de SMTP avec PHP

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

Important

Dans ce didacticiel, vous vous envoyez un e-mail afin de vérifier si vous l'avez reçu. Pour d'autres essais ou pour des tests de charge, utilisez le simulateur de boîte aux lettres email (mailbox) Amazon SES. Les e-mails envoyés au simulateur de boîte aux lettres email (mailbox) 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 Test d'envoi d'e-mails dans Amazon SES.

Prérequis

Avant de commencer, exécutez les tâches suivantes :

  • Vérifiez votre adresse e-mail avec Amazon SES – Avant de pouvoir envoyer un e-mail à l'aide d'Amazon SES, vous devez vérifier que vous êtes propriétaire de l'adresse e-mail de l'expéditeur. Si votre compte est encore dans l'environnement de test (sandbox) Amazon SES, vous devez également vérifier l'adresse e-mail du destinataire. La manière la plus simple de vérifier les adresses e-mail consiste à utiliser la console Amazon SES. Pour plus d'informations, consultez Vérification des adresses e-mail dans Amazon SES.

  • Obtenir vos informations d'identification SMTP – Vous avez besoin d'un nom d'utilisateur et d'un mot de passe SMTP Amazon SES afin de pouvoir accéder à l'interface SMTP Amazon SES. Vos informations d'identification SMTP et vos informations d'identification AWS ne sont pas les mêmes. Vous pouvez trouver vos informations d'identification SMTP en accédant à la page Paramètres SMTP de la console Amazon SES. Pour en savoir plus sur les informations d'identification SMTP, consultez Obtention de vos informations d'identification SMTP Amazon SES.

  • Installer PHP – PHP est disponible à l'adresse http://php.net/downloads.php. Après avoir installé PHP, ajoutez le chemin d'accès à PHP dans vos variables d'environnement afin de pouvoir exécuter PHP à partir de n'importe quelle invite de commande.

  • Installer le gestionnaire de dépendance Composer – Le gestionnaire de dépendance Composer vous permet de télécharger et d'installer la classe PHPMailer et ses dépendances. Pour installer Composer, suivez les instructions d'installation à https://getcomposer.org/download.

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

    path/to/composer require phpmailer/phpmailer

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

Procédure

La procédure suivante montre comment envoyer un e-mail via Amazon SES avec PHP.

Pour envoyer un e-mail à l'aide de l'interface SMTP Amazon SES 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'; // Replace smtp_password with your Amazon SES SMTP password. $passwordSmtp = 'smtp_password'; // 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 = $passwordSmtp; $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. } ?>
  2. Dans amazon-ses-smtp-sample.php, remplacez les éléments suivants par vos propres valeurs :

    • sender@example.com – Remplacez par une adresse e-mail que vous avez vérifiée avec Amazon SES. Pour plus d'informations, consultez Vérification des identités. Les adresses e-mail d'Amazon SES sont sensibles à la casse. 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 Sortie de l'environnement de test (sandbox) Amazon SES. Assurez-vous que l'adresse que vous saisissez est exactement la même que celle que vous avez vérifiée.

    • smtp_username – Remplacez les informations par les informations d'identification de votre nom d'utilisateur SMTP, que vous avez obtenues à partir de la page Paramètres SMTP de la console Amazon SES. Ce n'est pas le même que votre ID de clé d'accès AWS. Notez que les informations d'identification de votre nom d'utilisateur SMTP sont une chaîne alphanumérique de 20 caractères, et pas un nom intelligible.

    • smtp_password – Remplacez les informations par votre mot de passe SMTP, que vous avez obtenues à partir de la page Paramètres SMTP de la console Amazon SES. Ce n'est pas le même que votre clé d'accès secrète AWS.

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

    • Facultatif)email-smtp.us-west-2.amazonaws.com – Si vous souhaitez utiliser un point de terminaison SMTP Amazon SES dans une région autre que USA Ouest (Oregon), remplacez-le par le point de terminaison SMTP Amazon SES de la région que vous souhaitez utiliser. Pour connaître la liste des URL de point de terminaison SMTP pour les régions AWS dans lesquelles Amazon SES est disponible, consultez Amazon Simple Email Service (Amazon SES) dans le document AWS General Reference.

  3. Enregistrer amazon-ses-smtp-sample.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 entrez php amazon-ses-smtp-sample.php.

  5. Vérifiez la sortie. Si l'envoi de l'e-mail aboutit, la console affiche «Email sent!». Dans le cas contraire, elle affiche un message d'erreur.

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