私のサイド プロジェクト kwiqiでは、ActionMailer の 'receive' メソッドを使用して、受信メール メッセージを処理し、経費を追跡しています。Heroku には、同じコードが動作しないローカル メール サーバーがありません。私が考えた 1 つの解決策は、Gmail からメッセージを取得するコントローラー アクションを定期的に実行することです。合理的な他の解決策はありますか?Heroku で受信メールを処理している人はいますか?
4 に答える
sendgridアドオンとその解析API(http://wiki.sendgrid.com/doku.php?id=parse_api)を使用できます。これを行う方法についての短いチュートリアルをここに書きました:http://nanceskitchen.com/2010/02/21/accept-incoming-emails-into-a-heroku-app-using-sendgrid/
少し遅れていることは承知していますが、将来これが役立つと思われる方のために、Heroku Rails アプリでメールを簡単に受信できるようにするためのhttp:///CloudMailin.comアドオンを Heroku 用に作成しました。
Heroku は、DelayedJob を使用したワーカーの実行をサポートしています。ワーカーには Dynos と同じようにリソースが割り当てられ (時間単位で支払う)、このためにメールを処理するための専用リソースを取得します。
過去に、アプリでコントローラーを呼び出す Cron を使用していました。それはかなり効果的です。
1 時間ごとの制限が問題になる場合は、別の場所からアプリを呼び出すことができます... 私は Cron システムとして使用している優先度の低いサイトのいくつかに安価な Dreamhost アカウントを持っています。
この目的で使用できる ping およびアップタイム サービスも多数あります。これらのサービスを電子メール コントローラーに渡すだけです。
現在、Heroku の実際の制限は、cron ジョブでサポートされる最も速い頻度が 1 時間ごとであることです。
Gmail を使用し、cron の代わりに遅延ジョブを使用して、より適切な頻度を設定することをお勧めします。これを設定するための優れたチュートリアルがWiseJiveにあります