Amazon SES(Simple Email Service)を使って日本語メールを送信する
2011-01-26 aws
2011年1月25日にAWSの新サービス、SES(Simple Email Service)が発表されました。 早速使ってみましょう!
なお、コマンドラインツールの導入やメールアドレスの認証の手続きはsuz-labさんの以下のエントリが詳しいです。
環境確認は以下の通り:
- 環境
- Mac OS X 10.6.6
- コマンドラインツールの場所
- ~/Downloads/AmazonSES-2010-12-01
- 認証ファイルの場所
- ~/tmp/aws-credentials
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ pwd
/Users/masayuki/Downloads/AmazonSES-2010-12-01
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ ll
total 128
drwx------@ 8 masayuki staff 272B 1 25 21:52 AmazonSES-2010-12-01/
-rw-r--r--@ 1 masayuki staff 10K 12 20 16:54 AmazonSES-2010-12-01.zip
-rw-r--r--@ 1 masayuki staff 9.9K 12 20 16:53 LICENSE
-rw-r--r--@ 1 masayuki staff 95B 12 20 16:51 NOTICE
-rw-r--r--@ 1 masayuki staff 1.1K 12 20 16:51 README
-rw-r--r--@ 1 masayuki staff 7.2K 12 20 16:51 SES.pm
-rwxr-xr-x@ 1 masayuki staff 6.3K 12 20 16:51 ses-get-stats.pl*
-rwxr-xr-x@ 1 masayuki staff 6.0K 12 20 16:51 ses-send-email.pl*
-rwxr-xr-x@ 1 masayuki staff 4.3K 12 20 16:51 ses-verify-email-address.pl*
1. まずは普通に送信してみる
送信するメッセージの内容を記述したファイルを用意します。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ vi ~/tmp/ses_message.txt
1 This message was sent using Amazon SES.
2
3 日本語OK?
4 化けないか?
5 おーい。
コマンドラインから送信してみます。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ ./ses-send-email.pl -k ~/tmp/aws-credentials -s "日本語OK?" -f masayuki@risin.jp masayuki@risin.jp < ~/tmp/ses_message.txt
プロンプトが帰ってきたら、メーラーで受信確認します。(私はGmailを使用しています)
見事に化けました。
2. Rawモードで送信する
Rawモードでは、メールヘッダーのカスタマイズが行えます。multi-partメールやエンコーディングの設定を行う場合は、メッセージファイルの先頭にヘッダーを記述します。 今回は特に何もせず、Subjectのみ追加してみました。メッセージファイルは以下の通りです。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ vi ~/tmp/ses_message.txt
1 Subject: 日本語OK?
2
3 This message was sent using Amazon SES.
4
5 日本語OK?
6 化けないか?
7 おーい。
Rawモードで送信するには、引数に -r を付けます。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ ./ses-send-email.pl -k ~/tmp/aws-credentials -f masayuki@risin.jp -r masayuki@risin.jp < ~/tmp/ses_message.txt
メッセージを確認すると、
Gmailでは日本語が化けずに正しく表示されました。メールの詳細を見てみます。
Delivered-To: masayuki@risin.jpReceived: by 10.229.29.204 with SMTP id r12cs15627qcc;
Tue, 25 Jan 2011 19:43:50 -0800 (PST)
Received: by 10.224.19.210 with SMTP id c18mr5951674qab.343.1296013430319;
Tue, 25 Jan 2011 19:43:50 -0800 (PST)
Return-Path: <0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email-bounces.amazonses.com>
Received: from a192-79.smtp-out.amazonses.com (a192-79.smtp-out.amazonses.com [199.255.192.79])
by mx.google.com with ESMTP id x16si17187322vbl.46.2011.01.25.19.43.50;
Tue, 25 Jan 2011 19:43:50 -0800 (PST)
Received-SPF: pass (google.com: domain of 0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email-bounces.amazonses.com designates 199.255.192.79 as permitted sender) client-ip=199.255.192.79;
Authentication-Results: mx.google.com; spf=pass (google.com: domain of 0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email-bounces.amazonses.com designates 199.255.192.79 as permitted sender) smtp.mail=0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email-bounces.amazonses.com
Return-Path: 0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email-bounces.amazonses.com
Subject: 譌・譛ャ隱朧K?
Date: Wed, 26 Jan 2011 03:43:49 +0000
Message-ID: <0000012dc06b8944-235d13b1-42f9-463e-acf8-fa88972c9946-000000@email.amazonaws.com>
From: masayuki@risin.jp
To: masayuki@risin.jp
X-AWS-Outgoing: 199.255.192.79
This message was sent using Amazon SES.
譌・譛ャ隱朧K?
蛹悶¢縺ェ縺�°?
縺翫�縺�
Encodingが設定されていないので、このままだとメーラーによっては文字化けする可能性があります。
3. Rawモードで iso-2022-jp で送信する
今度はきちんとエンコーディングを指定して送信してみます。 まずはメッセージファイルを以下のようにします。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ vi ~/tmp/ses_message.txt
1 Content-Type: text/plain; charset=ISO-2022-JP
2 Subject: 日本語OK?
3
4 This message was sent using Amazon SES.
5
6 日本語OK?
7 化けないか?
8 おーい。
そしてこのファイルを iconv コマンドで iso-2022-jp にエンコードします。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ iconv -f utf8 -t iso-2022-jp ~/tmp/ses_message.txt > ~/tmp/ses_message2.txt
エンコードしたファイルを確認しましょう。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ vi ~/tmp/ses_message2.txt
1 Content-Type: text/plain; charset=ISO-2022-JP
2 Subject: ^[$BF|K\8l^[(BOK?
3
4 This message was sent using Amazon SES.
5
6 ^[$BF|K\8l^[(BOK?
7 ^[$B2=$1$J$$$+^[(B?
8 ^[$B$*!<$$!#^[(B
このファイルをもう一度Rawモードで送信してみます。
[masayuki@mrsy-mbp ~/Downloads/AmazonSES-2010-12-01]$ ./ses-send-email.pl -k ~/tmp/aws-credentials -f masayuki@risin.jp -r masayuki@risin.jp < ~/tmp/ses_message2.txt
メーラーで受信し、メールの詳細を見てみます。
Content-Type: text/plain; charset=ISO-2022-JP
Subject: 日本語OK?
Date: Wed, 26 Jan 2011 03:50:15 +0000
Message-ID: <0000012dc0716ebe-8ff97c37-c501-43e3-a103-e79648d8e84c-000000@email.amazonaws.com>
From: masayuki@risin.jp
To: masayuki@risin.jp
X-AWS-Outgoing: 199.255.192.79
This message was sent using Amazon SES.
日本語OK?
化けないか?
おーい。
きちんとContent-Typeが付いていますね!
まとめ
コマンドラインツールを使えばとても簡単に送信できることがわかりました。また、Rawモードで送信することで、メールヘッダーのカスタマイズも柔軟に行なえます。 とても魅力的なサービスなので一度使ってみてはいかがでしょうか?