2008-09-11 9 views
4

私の上司から、私が取り組んでいるアプリケーションをリクエストしました。基本的には、外部クライアントがExcelファイルを送信するためのメールアドレス設定を取得しています。Javaでの電子メールの自動処理

私が必要とするのは、このアドレスに送信された電子メールを自動的に受け取る方法です。添付ファイルを処理して処理し、フォルダに保存することができます。

でも始めるまでのいずれかの情報が参考になる\

注:私たちは、これを行うには蓮のノートのサーバーを使用しているが、一般的な方法は、(可能であれば)より参考になります。

答えて

9

電子メール - > mailserver - > [何か] - >ファイル上のディスク。

ディスク上のファイルは、かなり簡単に解析できます。JavaMailを使用してください。

[何か]が考えられます。SMTP接続のための

  • リスナー(行き過ぎ)!
  • Pop3/imapクライアント
  • Maildir /メールボックス
+1

あなたはそのような何か]あなたをカントをJavaMailを使用できますか? –

0

のLotus Notes/Dominoは、Notesデータベース内のメールを格納します。ドキュメント(電子メール)の取得、フィールド値(From、Subject)の読み取り、ファイルのデタッチに使用できるAPIがあります。

APIは

-LotusScript(VB変異体、Notesデータベース内で利用可能)

-Java(内またはデータベースの外部から)

-C API(外部)

を含みます

- COMサーバーで使用できる同じAPI

データベース内に(LotusScriptまたはJavaを使用して)「スケジュールされたエージェント」を作成して最後に実行されてから作成されたドキュメントを探し出し、添付ファイルを探し出して抽出することができます。エージェントは、ファイルシステムへの書き込みとその他のプロセスの開始に必要な権限を含め、サーバーに適切な権限を持つIDで署名する必要があります。

データベースの外部では、LotusScript以外のAPIを使用してサーバー/メールデータベースにログインし、同様の処理を実行できます。クライアントまたは別のサーバー上でローカルにファイルを抽出します。 C APIとCOMにはノートクライアントのインストールが必要ですが、JavaアプリケーションはCORBA/DIIOP経由でフルインストールせずに実行するように設定できます。

詳細については、Domino Designerのヘルプ(またはIBMのC API Webサイト)を参照してください。

これを行うための「一般的な方法」に関しては、Notesのデータにアクセスしていて添付ファイルを抽出する必要がある場合は、これらのAPIが最適な選択肢だと思います。アプリケーションを別のメールシステムに移植することを想定している場合は、「インターフェイス」を介してAPIルーチンをデカップリングすることを検討してください。新しいインターフェイスの新しい実装を追加するだけで、新しいメールシステムをサポートできます。

0

DIIOPを使用してNotes文書に比較的簡単にアクセスできますが、C Api道路を下るよりも簡単です...

1

最近、ドミノサーバー上のJavaエージェントでかなりのことをしました。 Domino 8.5サーバーはJava 6とその埋め込みをサポートしているため、新しいメールが到着したときに実行されるエージェントを組み込むために長い間ドミノ開発経験のある人が長くいるわけではありません。 LotusScriptではさらに簡単ですが、それはおそらく請負業者に提供する必要があるより専門的なスキルを必要とします。

抽出されたファイルに関係する可能性のある制限は、簡単にDominoサーバーのファイル構造上に置くことができますが、OSのセキュリティによって異なるサーバーに配置することが制限される場合があります。

0

Net Commons packageでPOP3Clientを試してください。 Javaプログラムは、任意の間隔(数分ごとに1時間ごと?)で特定のアカウントの新しいメールをチェックし、必要に応じてメッセージを取得/削除できるようにします。

1

データベース内のメールを使用します(Domino管理者が設定できますが、ヘルプファイルにもあります)。

このデータベースでは、新しいドキュメントをすべて処理するために定期的に実行されるエージェントを作成できます。そのエージェントは、NotesRichTextItemクラスのEmbeddedObjectsプロパティとNotesEmbeddedObjectクラスのExtractFileメソッドを使用して、添付ファイルのハンドルを取得し、指定した場所に抽出します。

たとえば、このスクリプトは、ドキュメントの本文アイテムのすべての添付ファイル、オブジェクトリンク、および埋め込みオブジェクトを処理します。それは添付ファイルを見つけるたびに、それはCドライブ上のsamplesディレクトリにファイルをデタッチし、文書

Dim doc As NotesDocument 
Dim rtitem As Variant 
'...set value of doc... 
Set rtitem = doc.GetFirstItem("Body") 
If (rtitem.Type = RICHTEXT) Then 
    Forall o In rtitem.EmbeddedObjects 
    If (o.Type = EMBED_ATTACHMENT) Then 
     Call o.ExtractFile("c:\samples\" & o.Source) 
     Call o.Remove 
     Call doc.Save(False, True) 
    End If 
    End Forall 
End If 
0

SMTP/POP3から添付ファイルを削除するDominoサーバー上で有効にすることができます。前にこれと一緒に働いて、それと共に走っているリスメールを手に入れました。 SMTPは多少資源を消費しますが、LotusLandに落として物事を働かせる必要がないため、努力する価値があります。特定の電子メールボックス(POP3またはSMTP)をチェックする小さなJava CLIプログラムを作成し、メッセージを解析し、添付ファイルを取り出して必要な場所に配置するだけです。ここではドキュメントとサンプルの

充実しています: http://java.sun.com/products/javamail/

あなたがこのアプローチを取っ開発の技術がより広く適用可能で、あなたの将来のキャリアの中で何ロータス/ドミノの特定よりもなります。

0

あなたが何をしていても、Lotus Notesのデータ構造を理解する必要があります。良いニュースは、完全に自動化されたソリューションをNotesで非常に簡単に構築できることです。

あなたの最善の策はNotes内で構築することです。新しいメールを受信するたびに自動的に実行するように設定することができます。ゲイリーの答えは死んでいますが、経験がなければ、おそらくあなた自身でそれを実装する方法を理解することは難しいでしょう。一方、それを設定するには、1時間か2時間以上、有能なNotesプログラマーを雇うべきではありません。

2

編集:私は最初にこの答えを書いてから、ワイザーが移動して、今だけのユニットテストツールであることを主張するので、塩ひとつまみと、以下の答えを取るた...


Svristさん答えは良いですが、後でJavaシステムでピックアップするためにメールをディスクに書き込むメールサーバである中間ステップを避けたい場合は、Wiserを使用できます。

ワイザーはあなたが、Javaのメールサーバを起動することができます:

Wiser wiser = new Wiser(); 
wiser.setPort(2500); 
wiser.start(); 

次に、あなただけのメールを定期的にポーリングすることができます。

for (WiserMessage message : wiser.getMessages()) 
{ 
    String envelopeSender = message.getEnvelopeSender(); 
    String envelopeReceiver = message.getEnvelopeReceiver(); 

    MimeMessage mess = message.getMimeMessage(); 

    // mail processing goes here 
} 
関連する問題