0

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

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

这种方法可以吗?还是我应该使用一些服务?有人可以指出我正确的方向吗?我有哪些选择?谢谢!

4

1 回答 1

2

如果您的交换服务器支持 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

于 2012-07-03T11:30:20.413 回答