メールを受け取ったら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サービスで処理をするって場合、他に何か良い方法ないのかな〜?