Amazon SES(Simple Email Service)で日本語メールを出す

Amazon SESを使って日本語メールを出してみた。
Amazon SESのメールは、デフォルトではUTF-8をMIME64エンコードされて送られるようだ。
SubjectはISO-2022-JPBase64で渡せば大丈夫そうだけど、本文はそのままだと文字化けした(UTF-8で渡しても)。

$ cat mbody.utf8 
これはテストです
$ ./ses-send-email.pl -k aws-credentials -s "=?ISO-2022-JP?B?GyRCJDMkbCRPJUYlOSVIJWEhPCVrJEckORsoQg==?=" -f foo@example.com bar@example.com < mbody.utf8 

届いたメール本文は...

〓 “〓‚〓〓 〓〓ƒ†〓‚¹〓ƒˆ〓 §〓 〓(文字化け)

そこでRawモードを使い、メール本文をファイルとして渡してみた(sandbox環境の場合、送受信アドレスはverifyされている必要があります)

$ cat mbody
From: foo <foo@example.com>
Date: Wed, 26 Jan 2011 16:58:54 +0900
Subject: =?ISO-2022-JP?B?GyRCJDMkbCRPJUYlOSVIJWEhPCVrJEckORsoQg==?=
To: bar@example.com
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

$3$l$O%F%9%H%a!<%k$G$9!#
$ ./ses-send-email.pl -k aws-credentials -r < mbody

届いたメール本文は...

これはテストメールです。

文字化けせずに届きました!
APIで送る場合には、SendRawEmail で送る必要がありそうです。

追記

下記の情報も頂きました!

@t_tanaka_wap AWS SDK for JavaAPI使ったら日本語メール正しく送れましたよ。 RT @j3tm0t0 Amazon SESを使って日本語メールを出してみた http://d.hatena.ne.jp/j3tm0t0/20110126/1296030520 #jawsug

追記2

@zembutsu Amazon SES Developer Tools 付属の ses-send-email.pl で日本後が化けるのは、スクリプト中で「binmode STDIN, ":utf8";」を書いておけば回避できますた。単純にマルチバイト環境を想定していなかったのかな #jawsug

ということで、トライ。

$ diff org/ses-send-email.pl ses-send-email.pl 
32a33
> binmode STDIN, ":utf8";
$ ./ses-send-email.pl -k aws-credentials -s "=?ISO-2022-JP?B?GyRCJDMkbCRPJUYlOSVIJWEhPCVrJEckORsoQg==?=" -f foo@example.com bar@example.com < mbody.utf8 

届いたメールは、

これはテストです

とちゃんと読めました(Gmailでは)。UTF-8だと昔ながらのメーラーの場合読めない気がするので、JISで送るのが無難な気がします。