从Grails应用程序获取Exchange邮件

时间:2012-07-03 08:21:28

标签: email grails exchange-server

我想抓住(从我的grails应用程序)发送到特定电子邮件地址的每封电子邮件,解析它,获取一些数据并将数据写入我的数据库。它的Exchange Server邮件。

我想我可以某种方式为给定的电子邮件帐户启动Outlook服务并检查收件箱文件夹,例如每10秒,如果有新邮件 - 获取它们。

这种方法可以吗?或者我应该使用一些服务?有人能指出我正确的方向吗?我有什么选择?谢谢!

1 个答案:

答案 0 :(得分: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的想法是,每当有新消息到达时,服务器都会调用messagesAdded方法(来自MessageCountListener接口)。