Amazon Simple Email Service
開発者ガイド

AWS SDK for PHP を使用して E メールを送信する

このトピックでは、AWS SDK for PHP を使用して Amazon SES 経由で E メールを送信する方法を示します。

重要

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

前提条件

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

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

  • AWS 認証情報を取得する — SDK を使用して Amazon SES にアクセスするには、AWS アクセスキー ID と AWS シークレットアクセスキーが必要です。認証情報は、AWS マネジメントコンソール の「認証情報」ページで確認できます。認証情報の詳細については、「Amazon SES での認証情報の使用」を参照してください。

  • PHP をインストールする — PHP は、http://php.net/downloads.php から入手できます。このチュートリアルでは、バージョン 5.5 以上の PHP が必要です。PHP をインストールした後、コマンドプロンプトから PHP を実行できるように環境変数に PHP のパスを追加します。このチュートリアルのコードは PHP 7.2.7 でテスト済みです。

  • AWS SDK for PHP バージョン 3 をインストールする — ダウンロードとインストールの手順については、AWS SDK for PHP のドキュメントを参照してください。このチュートリアルのコードは SDK バージョン 3.64.13 でテスト済みです。

  • 共有認証情報ファイルの作成 — このセクションのサンプルコードが正常に機能するためには、共有認証情報ファイルを作成する必要があります。詳細については、「認証情報の共有ファイルの作成」を参照してください。

手順

次の手順では、AWS SDK for PHP を使用して Amazon SES 経由で E メールを送信する方法を示します。

AWS SDK for PHP を使用して Amazon SES 経由で E メールを送信するには

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

    <?php // 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'; use Aws\Ses\SesClient; use Aws\Exception\AwsException; // Create an SesClient. Change the value of the region parameter if you're // using an AWS Region other than 米国西部 (オレゴン). Change the value of the // profile parameter if you want to use a profile in your credentials file // other than the default. $SesClient = new SesClient([ 'profile' => 'default', 'version' => '2010-12-01', 'region' => 'us-west-2' ]); // Replace sender@example.com with your "From" address. // This address must be verified with Amazon SES. $sender_email = 'sender@example.com'; // Replace these sample addresses with the addresses of your recipients. If // your account is still in the sandbox, these addresses must be verified. $recipient_emails = ['recipient1@example.com','recipient2@example.com']; // Specify a configuration set. If you do not want to use a configuration // set, comment the following variable, and the // 'ConfigurationSetName' => $configuration_set argument below. $configuration_set = 'ConfigSet'; $subject = 'Amazon SES test (AWS SDK for PHP)'; $plaintext_body = 'This email was sent with Amazon SES using the AWS SDK for PHP.' ; $html_body = '<h1>AWS Amazon Simple Email Service Test Email</h1>'. '<p>This email was sent with <a href="https://aws.amazon.com/ses/">'. 'Amazon SES</a> using the <a href="https://aws.amazon.com/sdk-for-php/">'. 'AWS SDK for PHP</a>.</p>'; $char_set = 'UTF-8'; try { $result = $SesClient->sendEmail([ 'Destination' => [ 'ToAddresses' => $recipient_emails, ], 'ReplyToAddresses' => [$sender_email], 'Source' => $sender_email, 'Message' => [ 'Body' => [ 'Html' => [ 'Charset' => $char_set, 'Data' => $html_body, ], 'Text' => [ 'Charset' => $char_set, 'Data' => $plaintext_body, ], ], 'Subject' => [ 'Charset' => $char_set, 'Data' => $subject, ], ], // If you aren't using a configuration set, comment or delete the // following line 'ConfigurationSetName' => $configuration_set, ]); $messageId = $result['MessageId']; echo("Email sent! Message ID: $messageId"."\n"); } catch (AwsException $e) { // output error message if fails echo $e->getMessage(); echo("The email was not sent. Error message: ".$e->getAwsErrorMessage()."\n"); echo "\n"; }
  2. amazon-ses-sample.php で、以下を独自の値に置き換えます。

    • path_to_sdk_inclusion — プログラムに AWS SDK for PHP を含めるために必要なパスに置き換えます。詳細については、AWS SDK for PHP ドキュメントを参照してください。

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

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

    • (オプション) ConfigSet — この E メールを送信する際に設定セットを使用する場合、この値を設定セットの名前で置き換えます。設定セットの詳細については、「Amazon SES の設定セットの使用」を参照してください。

    • (オプション) us-west-2 — 米国西部 (オレゴン) 以外のリージョンで Amazon SES を使用する場合は、使用するリージョンに置き換えます。Amazon SES を使用できるリージョンのリストについては、AWS General Referenceの「Amazon Simple Email Service (Amazon SES)」を参照してください。

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

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

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

    注記

    プログラムの実行時に "cURL error 60: SSL certificate problem" エラーが発生した場合は、AWS SDK for PHP のドキュメントに従って、最新の CA バンドルをダウンロードしてください。次に、amazon-ses-sample.php で、SesClient::factory 配列に以下の行を追加し、ダウンロードした CA バンドルのパスで path_of_certs を置き換えて、プログラムを再実行します。

    'http' => [ 'verify' => 'path_of_certs\ca-bundle.crt' ]
  6. 受取人のアドレスの E メールクライアントにサインインします。送信した E メールメッセージを確認します。

このページの内容: