2011年10月25日火曜日

PHPでSESを使ってみた

スズキです。

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

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

#!/usr/bin/php
<?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
<?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"
    }
}

これでNagiosのアラートメールがSESでの送信なる...
----------
http://www.suz-lab.com

0 コメント: