aws-sesでbccが効かない

こんばんは,@h3_potetoです.
今日から新しいインターン生が来てくれていて,またちょっと人数が増えました.
にぎやかになるといろいろと楽しくていいですね.


現在,インターファームのサービスの多くは,AWSのサーバーを使っています.
AWSでサービスを運用していると,メールを送るのもAWS内で完結していた方が楽になります.
そのためにAWSにはSESというメール配信サービがあります.


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


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

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


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


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


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


ということはAWS SESの設定なのですが,Toで指定したアドレスには正常に送られているので,どうやらSESの設定ではない.


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やっくれます.
なんて楽な!


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






余談

aws-sdkを使っているプロジェクトで,

delivery_method = :amazon_ses

の記述には気づいていたのですが,メソッドの定義がどこにもなくて探すのに苦労しました.
まさかgem内で定義されているメソッドだとは…….