メールを受け取ったらWebサービスで処理する流れ

例えば不定期に届くメールを受け取ったら、その内容をWebサービスで処理したい場合、どうやるのが楽チンな方法なんだろう?


具体的には gmail に届いたメールを自前の Webサービスで処理したいのだけど、gmailのサーバが Webサービスを起動?してくれる方法って…。
Apps Script とかも考えたのだけど、正直なにか新しいことをやるのは面倒で避けちゃった。


で、見つけたのが Couldmailinってサービス。(これ、かなり昔にちょっと流行った?みたい…)
このサービス、メールを指定されたアドレスに送ると、そのメールを自分が指定した URL に HTTP POST してくれる。


これを使えば下のような流れでやりたいことができる!
1. gmail に届いたメールを Couldmailin に転送
2. 転送されたメールは Couldmailin で指定された URL に HTTP POST
3. Webサービスがメールの内容を受け取って処理をする


というわけで、サクっと使ってみたのでメモ。

Couldmailin を使ってみる

まずは Cloudmailin にアクセスしてアカウントを作成

アカウント作成をするとメールを送るアドレスを作成する画面になる。

ここで、cloudmailin に送られたメールを HTTP POST する URL を入力して Submit すると、cloudmailin 宛に送るメールアドレスが作成される。

今回はサンプルとして http://www.myservice.jp/post/here を入力してメールアドレスを作成してみた。
出来上がったアドレス f0360c6918415714046a@cloudmailin.net 宛に送ったメールは http://www.myservice.jp/post/here に HTTP POST される。


「Manage Address」をクリックすればそのアドレスから HTTP POST したヒストリーを表示してくれる。


ところで、HTTP POST される内容はどうなっているのか?
これはメールアドレス作成の時のポップアップで選択できる。
デフォルトで「Multipart」が推奨として選択されているけど、他に「JSON」と「Raw」が選択できる。
自分はなんとなく処理しやすいと思ったので JSON で受け取ってる。

WebHookApp.com で POST される内容を確認

さて、次は実際に Webサービスでの処理を実装するわけだけど、とりあえずローカルで確認してから実際のサーバ環境にデプロイすると思う。
というわけで、HTTP POST される内容がどんなだかを確認して、それをローカルの環境に POST する手伝いをしてくれるサービスを使うと便利。


それが WebHookApp.com
特にアカウント作成する必要もなく、ただ表示された URL に HTTP POST したらその内容を表示してくれる。


使い方は簡単。
1. WebHookApp.com にアクセスして「Get Started Now」をクリック

2. 表示される URL が HTTP POST の内容を表示してくれるアドレス

3. cloudmailin で上記アドレスを使って新しいメールアドレスを作成

4. 新しく作成したメールアドレスにメールを送る

5. WebHookApp.com で内容を確認

(toggle curl command をクリックしてメール内容を curl で POST するコマンドを表示することもできるよ!)


後はこの curl コマンドでローカルの Webサービスに POST すれば OK!
で、ローカルでデバッグして問題がなくなったら、本番サーバにデプロイして Cloudmailin の設定も本番用に変更すれば終了。


というわけで、サクっと駆け足でメモしてみたけど、メールが届いたら Webサービスで処理をするって場合には CloundMailin は便利!
更に WebHookApp.com も使うとデバッグが楽チン!
なんだけど、本当、メールが届いたことをトリガに Webサービスで処理をするって場合、他に何か良い方法ないのかな〜?