コマンドベースからAmazonSESを使ってメール送信が可能です。大まかな流れて押しては、
1.API登録
2.デヴィロッパーツールのダウンロード
3.諸環境の設定
4.Amazonへプロダクション申請
となっています。
(1)まずAmazonのAPIキーは事前に取得しておく必要があります。
Amazon SES settings
(2)API取得後、次のDevelopmentToolをダウンロードして下さい。
Development Tools,
http://aws.amazon.com/developertools/Amazon-SES/8945574369528337
以下は構築した際の流れを記します。
(3)次のプロダクトをインストールして下さい。
$ mkdir -p /var/git/maishoku/webapps/scripts/ses
$ wget http://d36cz9buwru1tt.cloudfront.net/catalog/attachments/ses-tools-2012-07-09.zip
$ unzip ses-tools-*.zip # you need to install unzip command if you dont have.
$ sudo apt-get
$ sudo apt-get install gcc g++ make libyaml-perl libxml2 libxml2-dev libssl-dev
$ sudo perl -MCPAN -e 'install Digest::SHA'
$ sudo perl -MCPAN -e 'install URI::Escape'
$ sudo perl -MCPAN -e 'install Mozilla::CA'
$ sudo perl -MCPAN -e 'install Bundle::LWP'
$ sudo perl -MCPAN -e 'install LWP::Protocol::https'
$ sudo perl -MCPAN -e 'install MIME::Base64'
$ sudo perl -MCPAN -e 'install Crypt::SSLeay'
$ sudo perl -MCPAN -e 'install XML::LibXML'
続いて aws-credentials( 名前は何でもOK ) を作成します。そこの先ほど取得したAccessKEY, SecretKeyを入れて下さい。
$ emacs aws-credentials
AWSAccessKeyId=Aceess Key ID
AWSSecretKey=Secret Access Key
(4)メール送信の準備が整いました。
PERL5LIBはアマゾンのDevToolのパスを記載します。環境に応じて変えて下さい。
$ export PERL5LIB=/var/git/maishoku/webapps/scripts/ses/bin
メールを送信するses-send-email.plを使いますが、使い方は以下のとおりです。
Usage:
ses-send-email.pl [--help] [-e URL] [-k FILE] [--verbose] -s SUBJECT -f
FROM_EMAIL [-c CC_EMAIL[,CC_EMAIL]...] [-b BCC_EMAIL[,BCC_EMAIL]...]
TO_EMAIL[,TO_EMAIL]...
ses-send-email.pl [--help] [-e URL] [-k FILE] [--verbose] -r [-f
FROM_EMAIL] [TO_EMAIL[,TO_EMAIL]...]
$ ./ses-send-email.pl -k aws-credentials -s "Test Email" -f noreply@maishoku.com support@maishoku.com < README
上記コマンドでメールがおくれます。なお、プロダクションのリクエストをAmazonにしないと次のようなエラーが出ます。
Email address is not verified.
(5)プロダクションリクエストは次から行えます。
https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/SESProductionAccess2011Q3
蛇足
エラーの詳細を知りたい場合は、上記コマンドにVerboseオプションをつけます。するとXML形式でエラーが表示されます。
MessageRejectedお疲れ様でした。
株式会社OctOpt
コンピューターサイエンス会社OctOptの技術公式ブログ
等々力 康弘
@rocky_house