Freelance Web Engineer

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モードで送信することで、メールヘッダーのカスタマイズも柔軟に行なえます。 とても魅力的なサービスなので一度使ってみてはいかがでしょうか?

参考

comments powered by Disqus