Amazon Simple Email Service
開発者ガイド

PHP で SMTP を使用して E メールを送信する

この例では PHPMailer パッケージを使用し、SMTP インターフェイスで Amazon SES を介して E メールを送信します。

重要

このチュートリアルでは、受信を確認できるように自分宛に E メールを送信します。さらに詳しい実験や負荷テストには、Amazon SES メールボックスシミュレーターを使用してください。メールボックスシミュレーターに送信される E メールは、送信クォータに加算されず、バウンス率や苦情率の計算にも含まれません。詳細については、「Amazon SES での E メール送信のテスト」を参照してください。

前提条件

開始する前に、次のタスクを実行します。

  • Amazon SES を使用して E メールアドレスを確認 – Amazon SES でメールを送信する前に、送信者のメールアドレスを所有していることを確認する必要があります。アカウントが Amazon SES サンドボックスにまだある場合は、受取人の E メールアドレスも検証する必要があります。E メールアドレスを検証する最も簡単な方法は、Amazon SES コンソールを使用することです。詳細については、「Amazon SES での E メールアドレスの検証」を参照してください。

  • SMTP 認証情報を取得する – Amazon SES SMTP インターフェイスにアクセスするには、Amazon SES SMTP ユーザー名とパスワードが必要です。SMTP 認証情報は、AWS 認証情報と同じではありません。SMTP 認証情報は、Amazon SES コンソールの SMTP 設定ページで確認できます。SMTP 認証情報の詳細については、「Amazon SES SMTP 認証情報の取得」を参照してください。

  • PHP をインストールする – PHP は、http://php.net/downloads.php から入手できます。PHP をインストールした後、コマンドプロンプトから PHP を実行できるように環境変数に PHP のパスを追加します。

  • Composer dependency manager をインストールする – Composer dependency manager では、PHPMailer クラスとその依存関係をダウンロードしてインストールできます。Composer をインストールするには、https://getcomposer.org/download のインストール手順を参照してください。

  • PHPMailer パッケージをインストールする – Composer をインストールしたら、テキストエディタで composer.json ファイルを開きます。require セクションに "phpmailer/phpmailer":"~5.2" 行を追加し、ファイルを保存します。コマンドラインで、composer.json ファイルがあるディレクトリに変更し、「php composer.phar update」と入力して PHPMailer をダウンロードしてインストールします。

手順

次の手順は、PHP で Amazon SES を介して E メールを送信する方法を示しています。

PHP で Amazon SES の SMTP インターフェイスを使用して E メールを送信するには

  1. amazon-ses-smtp-sample.php という名前のファイルを作成します。テキストエディターでファイルを開き、次のコードを貼り付けます。

    <?php // Modify the path in the require statement below to refer to the // location of your Composer autoload.php file. require 'path_to_sdk_inclusion'; // Instantiate a new PHPMailer $mail = new PHPMailer; // Tell PHPMailer to use SMTP $mail->isSMTP(); // Replace sender@example.com with your "From" address. // This address must be verified with Amazon SES. $mail->setFrom('sender@example.com', 'Sender Name'); // Replace recipient@example.com with a "To" address. If your account // is still in the sandbox, this address must be verified. // Also note that you can include several addAddress() lines to send // email to multiple recipients. $mail->addAddress('recipient@example.com', 'Recipient Name'); // Replace smtp_username with your Amazon SES SMTP user name. $mail->Username = 'smtp_username'; // Replace smtp_password with your Amazon SES SMTP password. $mail->Password = 'smtp_password'; // Specify a configuration set. If you do not want to use a configuration // set, comment or remove the next line. $mail->addCustomHeader('X-SES-CONFIGURATION-SET', '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. $mail->Host = 'email-smtp.us-west-2.amazonaws.com'; // The subject line of the email $mail->Subject = 'Amazon SES test (SMTP interface accessed using PHP)'; // The HTML-formatted body of the email $mail->Body = '<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>'; // Tells PHPMailer to use SMTP authentication $mail->SMTPAuth = true; // Enable TLS encryption over port 587 $mail->SMTPSecure = 'tls'; $mail->Port = 587; // Tells PHPMailer to send HTML-formatted email $mail->isHTML(true); // The alternative email body; this is only displayed when a recipient // opens the email in a non-HTML email client. The \r\n represents a // line break. $mail->AltBody = "Email Test\r\nThis email was sent through the Amazon SES SMTP interface using the PHPMailer class."; if(!$mail->send()) { echo "Email not sent. " , $mail->ErrorInfo , PHP_EOL; } else { echo "Email sent!" , PHP_EOL; } ?>
  2. amazon-ses-smtp-sample.php で、以下を独自の値に置き換えます。

    • sender@example.com – Amazon SES で検証した E メールアドレスに置き換えます。詳細については、「ID の検証」を参照してください。Amazon SES では、E メールアドレスの大文字と小文字が区別されます。検証したアドレスと完全に一致するアドレスを入力してください。

    • recipient@example.com – 受取人のアドレスに置き換えます。アカウントがサンドボックスにまだある場合は、このアドレスを使用前に確認する必要があります。詳細については、「Amazon SES サンドボックス外への移動」を参照してください。検証したアドレスと完全に一致するアドレスを入力してください。

    • smtp_username – SMTP ユーザー名認証情報に置き換えます。この認証情報は、Amazon SES コンソールの SMTP 設定ページから取得できます。これは、AWS アクセスキー ID とは異なります。SMTP ユーザー名の認証情報は 20 文字の文字と数字の並びであり、意味のある名前ではありません。

    • smtp_password – SMTP パスワードに置き換えます。このパスワードは、Amazon SES コンソールの SMTP 設定ページから取得できます。これは、AWS シークレットアクセスキーとは異なります

    • (オプション) email-smtp.us-west-2.amazonaws.com – 米国西部 (オレゴン) 以外のリージョンで Amazon SES SMTP エンドポイントを使用する場合は、使用するリージョンの Amazon SES SMTP エンドポイントに置き換えます。Amazon SES SMTP エンドポイントのリストについては、「リージョンと Amazon SES」を参照してください。

  3. 保存 amazon-ses-smtp-sample.php.

  4. プログラムを実行するには、amazon-ses-smtp-sample.php と同じディレクトリでコマンドプロンプトを開き、「php amazon-ses-smtp-sample.php」と入力します。

  5. 出力を確認します。メールが正常に送信されると、コンソールに "Email sent!" と表示されます。送信に失敗すると、エラーメッセージが表示されます。

  6. 受取人のアドレスの E メールクライアントにサインインします。送信した E メールメッセージを確認します。

このページの内容: