2014年9月13日土曜日

fuelphpでAWSのSESを使ったメール送信システムを作りたい的なお話

  • このエントリーをはてなブックマークに追加

fuelphpを使ってサイトを構築するってなると、ある程度の規模のwebサイトやアプリだったりするわけで。
大体会員登録だとかなんだとかでメールを送る必要があったりする。
サーバーをレンタルサーバーとかでやっていれば何も関係ないんだけど、
AWSでサーバーを構築する場合はサーバーリソースを考えると、webサーバー・DBサーバー・メールサーバーと分けたいわけで。
postfixを入れたサーバーを立ててもいいけど、それだと値段的なものとか考えても無駄だし、
SESを使うことによって節約になったりそもそもメールサーバーを立てないでいいというなんという便利な感じ。

ということで今日はSESをfuelphpで使うには的な話をば。

ちなみに以前アップした記事でほんのちょこっとだけfuelphpでSESを使うには的なことを触れたわけだけど、
今日はがっつりSESの設定からfuelphpでうんちゃら的なところまでちゃんと書こうと思っている的な。
けど面倒なので大体適当な感じになるかもだけど。


■SESの管理画面でregionやら諸々の設定

とりあえずSESの管理画面に行く。

regionを適当に設定する。
ちなみにSESではregionは「US East(N. Virginia)」と「US West(Oregon)」と「EU(ireland)」の三つしかなかったりする。
とりあえず自分は日本に割と近いからっていうよくわからない理由でバージニアにしたんだけど。

で、そのあとEmail Addresses(送信者)の設定って感じで、送信に使うメールアドレスを設定する。
3つぐらい適当に登録しておくといいかも。
登録した際に確認メールがとんでくるので認証しておくみたいな。
SES経由でメールを送るにはここに登録したメールアドレスでないとダメなので要注意的な。

で、次にAWS経由になってしまうのでDKIMをenableに。
先ほど設定したメールアドレス毎に設定できたり、ドメイン毎に設定できるので、
Route53を使っているとさくっと出来るから便利だったり。

次にSMTP credentialsの設定やらなんやらしたり、
ユーザの権限をどうにかするなりしてちょいちょいみたいな。

で、その後fuelphpでpackageにfuel-amazon-sesを入れる。
使い方はgithubに書いてあったりするので省略するけど。
これを使う事によって簡単にSESをfuelphpで扱う事が出来る。
※ただサンドボックスモードだと設定したメールアドレスにしかメールを送れないので、上限緩和をする必要があったりする。

ってな感じで適当にfuel-amazon-sesを使ってあげれば、簡単にfuelphpでSES経由でメールを送信する事が出来る。
ちなみにこのfuel-amazon-sesはRest経由でメールを送るタイプであったりするけど、
最近amazon側でのレスポンスが変わったのかこのamazon-sesではレスポンスがうまく取得できなかったりするので要注意。
なのでプログラムによってはうまく動作させる事ができなかったり。

とりあえずSES使うとメール自動送信プログラムとかかなり楽に出来るのでよかったりするよ的なお話。

Adsense