Webエンジニアの備忘録

およそ自己の作業メモとして残しております。

aws-sdk-phpを使い、SimpleEmailServer(SES)にてsendEmail

前回aws-sdk-phpの3系の扱いでつまずいたので、SESクライアントをサンプルにインスタンスの生成についても記載しておきます。

元の情報ページ

http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/basic-usage.html http://docs.aws.amazon.com/aws-sdk-php/latest/class-Aws.Ses.SesClient.html#_sendEmail

インストールするもの

以下が必要になります * aws-sdk-php(Composer等で取り込み) * curl(apt-get install php5-curl で取得しました)

実際のコーディング

client = new SesClient(array(
    'region'    => 'us-west-2',
    'version'   => 'latest',
    'key'       => 'xxxxxxxxxxxxxxxxxxxxx',
    'secret'    => 'xxxxxxxxxxxxxxxxxxxxx',
));

3系からaccess keyやsecret keyは環境変数より取得するようになりました。こちらはAWSサーバーで他サーバーへのアクセス権限を追加する際と同じ仕様ですが、API利用時にパラメータで送ってテストしたい場合は2系同様、上記のようにキーを設定することも可能です。

$result = $client->sendEmail(array(
    // Source is required
    'Source' => 'string',
    // Destination is required
    'Destination' => array(
        'ToAddresses' => array('string', ... ),
        'CcAddresses' => array('string', ... ),
        'BccAddresses' => array('string', ... ),
    ),
    // Message is required
    'Message' => array(
        // Subject is required
        'Subject' => array(
            // Data is required
            'Data' => 'string',
            'Charset' => 'string',
        ),
        // Body is required
        'Body' => array(
            'Text' => array(
                // Data is required
                'Data' => 'string',
                'Charset' => 'string',
            ),
            'Html' => array(
                // Data is required
                'Data' => 'string',
                'Charset' => 'string',
            ),
        ),
    ),
    'ReplyToAddresses' => array('string', ... ),
    'ReturnPath' => 'string',
));

こちらはドキュメントにある通り、メール送信に必要なパラメータです。 text、htmlメールどちらも送信できます。

受信にかかわる設定

サンドボックスモードの際はホワイトリスト方式で上記メソッドの実行が可能です。 AWS>Service(SESを選択)>EmailAddress>Verify a New Email Address にてテストに利用するアドレスの追加が必要です。