AWS SESでBCC込みのメールを配信したい

RailsにはActionMailerというものがあり,メールを送る場合はこいつを使う場合がほとんどかと思います.

アプリケーション側はそれでいいのですが,サーバーとしてAWSを使用していると,ドメインの設定などをする都合上,サーバーのインスタンス本体からメールを送るのはちょっとどうかと思いますよね.
そのためにAWSにはSESというメール配信サービがあります.


RailsからAWS SES経由でメールを送る場合,ちょっとdelivery_methodの設定をしてやれば,かなり楽にメールを送ることができてしまいます.


そして,それなりに有名なGemとしていろんなところで紹介されているのが,aws-sesというgemです.

http://blog.libero-tecnologia.net/?p=46
このくらいの設定で,普通にSESのサービスを利用することができるので非常に便利なのですが…….

BCC指定のアドレスにメールが配信されない


これ,実際に動かし始めるまで気がつかなかったのですが,どうやらActionMailerでbccの指定をしても,メールが配信されてない.


で,ローカルで調べてみたのですがdevelopment環境でsmtpをローカルにして送信している限り,ちゃんと送信されているんですね.


ということはAWS SES周りが怪しいのですが,Toで指定したアドレスには正常に送られているので,どうやら送信のメソッド自体は正常に動いているっぽい.


aws-sesはbcc送信に対応していない


https://github.com/drewblas/aws-ses/issues/16

これ,かなり古い情報なので解消されているかと思ったのですが,どうやら上手く動いていない模様.

結局メソッドを書き換えないと送れないらしく,bccでのメール送信ができない.



bccで送りたいときはaws-sdkを使う


aws-sdkでもメール送信メソッドは用意されています.
https://github.com/aws/aws-sdk-ruby


読めばわかりますが,こちらはdelivery_methodの設定を:amazon_sesとしておけば,あとはAWS_ACCESS_KEY_ID他の環境変数を指定しておくだけで勝手にAWS.configやっくれます.
なんて楽な!

delivery_method = :amazon_ses

ここで指定している:amazon_sesというメソッド自体はaws-sdkのGem内部で定義されているようなので,そのまま使えます.


そして問題になっていたbccですが,まったく問題なく送信できました.