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で送りたいときは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ですが,まったく問題なく送信できました.