我想(从我的 grails 应用程序)抓取发送到特定电子邮件地址的每封电子邮件,对其进行解析,获取一些数据并将该数据写入我的数据库中。它的 Exchange Server 邮件。
我想我可以以某种方式为给定的电子邮件帐户启动 Outlook 服务并检查收件箱文件夹,例如每 10 秒,如果有新邮件 - 获取它们。
这种方法可以吗?还是我应该使用一些服务?有人可以指出我正确的方向吗?我有哪些选择?谢谢!
我想(从我的 grails 应用程序)抓取发送到特定电子邮件地址的每封电子邮件,对其进行解析,获取一些数据并将该数据写入我的数据库中。它的 Exchange Server 邮件。
我想我可以以某种方式为给定的电子邮件帐户启动 Outlook 服务并检查收件箱文件夹,例如每 10 秒,如果有新邮件 - 获取它们。
这种方法可以吗?还是我应该使用一些服务?有人可以指出我正确的方向吗?我有哪些选择?谢谢!
如果您的交换服务器支持 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