Play Frameworkを使用した電子メールフェッチャ

私は数秒ごとに電子メールサーバーにpingを行い、到着した新しい電子メールをすべて取り込むIMAPポーラーを開発する必要があります。

私はもう一度別のアプリケーションでそれをやったことがありますが、Spring Integrationのインバウンドメールチャネルを使用しました。

私はPlayで「プレイ」を始めたばかりで、これを達成する最良の方法は何か分かりません。 JavaMailはすでにメールを取得する可能性を提供していることは知っていますが、実際にこれをパッケージ化する方法はわかりません。これは別のモジュール、別のプラグイン、サービス、またはsthですか?

ポーリング機能をジョブとして実装する必要がありますか?

NOTE: It is a web application BTW, although the description above may suggest it is not.

1

2 答え

これを解決するにはいくつかの方法があります:

1)ジョブでjavaを使用して定期的にIMAPサーバーをポーリングする

ジョブの作成に関するドキュメントが用意されています。これはかなり簡単です。毎分または5分ごとにジョブが実行されるように設定し、新しい電子メールを実際にチェックするコードを追加するだけです。

http://www.playframework.org/documentation/1.2.4/jobs

If you're looking for how to check for new emails on IMAP then have a look through stack exchange there. For example, to poll gmail check out this question: Getting mail from GMail into Java application using IMAP

2)ラクダモジュールを使用してカスタムルート/プロセッサーを使用してIMAPサーバーをポーリングする

これは重量のあるソリューションであり、Apache Camelの他の機能を利用する場合にのみ推奨されます。

The module is available here: http://www.playframework.org/modules/camel

Using camel to poll for IMAP messages is fairly easy once you get your head around how to use camel, the specific info for the IMAP route is here: http://camel.apache.org/mail.html

2
追加された

In my opinion you shouldn't use Play at all for this — if I understand your requirements correctly. Play is a web framework intended to handle HTTP requests. Your requirements say nothing about HTTP at all, so a large part of Play! would be useless.

これを実行するには、Playのサーバーランタイムとジョブ(およびcron)アーキテクチャを使用する可能性がありますが、意図していなかったものについては、フレームワークの機能を悪用することになります。また、ビルドしたいアプリケーション/サービス(たとえばPythonランタイム)のようなアプリケーション/サービスに必要なことは、Playの要件を継承することもできます。

私はあなたがこれをPlayに使用するのではなく、Springを使って簡単で簡単なJavaアプリケーションとして作成するべきだと思います。 Springのスケジューリング機能を使用するとあなたが望むものを簡単に実装することができます。

当然ながら、これの上にWebフロントエンドを将来構築しようとすると、それはまったく別の話になります。

0
追加された
まあ、それは完全にWebアプリケーションですが、メールでも制御できるものです
追加された 著者 preslavrachev,