以前、SESを使ってみた(AWS)の記事で、PerlスクリプトでのSESの利用を紹介しましたが、今回は、PHPで同様の内容を試してみました。

まずは、下記スクリプトで送信元メールアドレスの承認をします。

#!/usr/bin/php
require_once("/opt/aws/php/default/sdk.class.php");
$ses = new AmazonSES(
    "XXXXXXXXXXXXXXXXXXXX",
    "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
);
$response = $ses->verify_email_address($argv[1]);
var_dump($response->body);
?>

下記のようにスクリプトを実行すると、

# ./verify-email-address alert@suz-lab.com

次のような結果となり、

object(CFSimpleXML)#5 (2) {
    ["@attributes"]=>
    array(1) {
        ["ns"]=>
        string(40) "http://ses.amazonaws.com/doc/2010-12-01/"
    }
    ["ResponseMetadata"]=>
    object(CFSimpleXML)#3 (1) {
        ["RequestId"]=>
        string(36) "885fc1ba-fe3a-11e0-b112-7f7789067247"
    }
}

下記のようなメールが届きます。

Dear Amazon SES customer:

We have received a request to authorize an email address for use with Amazon SES. To confirm that you are authorized to use this email address, please go to the following URL:

https://email-verification.us-east-1.amazonaws.com/?…
Your request will not be processed unless you confirm the address using this URL.

To learn more about sending email from Amazon SES, please refer to the Amazon SES Developer Guide.

Sincerely, Amazon Web Services

メール本文のURLをクリックすると、下記の画面が表示され、指定したメールアドレスが承認されると、そのアドレスを送信元としてSESでメールを送信できるようになります。

実際に、下記のスクリプトでメールを送信してみます。

#!/usr/bin/php
require_once("/opt/aws/php/default/sdk.class.php");
$ses = new AmazonSES(
    "XXXXXXXXXXXXXXXXXXXX",
    "YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY"
);
$response = $ses->send_email(
    $argv[1],
    array("ToAddresses" => $argv[2]),
    array(
        "Subject.Data"   => "Email Test " . time(),
        "Body.Text.Data" => "This is a simple test message " . time()
    )
);
var_dump($response->body);
?>

そして、下記のように、スクリプトを実行します。

# ./send-email alert@suz-lab.com suzuki@suz-lab.com

次のようなレスポンスがあり、メールが送信されます。
※既にPuroductionモードなので任意のメールアドレスに送信できます。

object(CFSimpleXML)#5 (3) {
    ["@attributes"]=>
    array(1) {
        ["ns"]=>
        string(40) "http://ses.amazonaws.com/doc/2010-12-01/"
    }
    ["SendEmailResult"]=>
    object(CFSimpleXML)#3 (1) {
        ["MessageId"]=>
        string(60) "0000013335e96bb2-2f904dc4-78fe-433e-8eed-1320b955f687-000000"
    }
    ["ResponseMetadata"]=>
    object(CFSimpleXML)#6 (1) {
        ["RequestId"]=>
        string(36) "017ee15c-fe3c-11e0-a309-e313d04d677b"
    }
}

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら