0

特定のメールアドレスに送信されたすべてのメールを(grailsアプリから)取得して解析し、データを取得して、そのデータをデータベースに書き込みたいと思います。そのExchangeServerメール。

どういうわけか、特定の電子メールアカウントに対してOutlookサービスを開始し、たとえば10秒ごとに受信トレイフォルダーをチェックインして、新着メールがある場合はそれらを取得できると思います。

このアプローチは大丈夫ですか?または、何らかのサービスを使用する必要がありますか?誰かが私を正しい方向に向けることができますか?私のオプションは何ですか?ありがとう!

4

1 に答える 1

2

Exchange サーバーが IMAP をサポートしている場合は、通常の JavaMail メカニズムを使用してそれに接続し、新しいメールをポーリングするか、(より良い) 次のようにサーバーに新しいメッセージをアプリにプッシュさせることができます (エラー処理は省略されています。多くの可能性があります)。残念ながらエラー状態...):

boolean finished = false

void setup() {
  Properties props = new Properties()
  props.setProperty("mail.store.protocol", "imaps")
  Session session = Session.getDefaultInstance(props, null)
  Store store = session.getStore("imaps")
  store.connect("mailserver.example.com", "username", "password")
  Folder inFolder = currentMailStore.getFolder("INBOX")
  inFolder.open(Folder.READ_WRITE)
  inFolder.addMessageCountListener(this)
  while(!finished) {
    inFolder.idle()
    sleep(10000)
  }
}

public void messagesAdded(MessageCountEvent e) {
  for(Message m in e.messages) {
    //...
  }
}

新しいメッセージが到着するたびに、サーバーが(インターフェイスから) メソッドidleを呼び出すという考え方です。messagesAddedMessageCountListener

于 2012-07-03T11:30:20.413 に答える