0

I have an IMAP connection to fetch emails using Mule. I'm running into an issue.

Here are my 2 simple requirements:

  1. I want to fetch emails in reverse order. (latest first)
  2. Ignore SEEN messages but don't delete them.

I was looking at the code that mule (3.3.1) uses: org.mule.transport.email.RetrieveMessageReceiver.poll().

The code seems to be fetching messages from message 1.

348: Message[] messages = folder.getMessages(1, batchSize);

The messages fetched here are processed in a loop in :

org.mule.transport.email.RetrieveMessageReceiver.messagesAdded(MessageCountEvent)

142: if (!messages[i].getFlags().contains(Flags.Flag.DELETED)
143:      && !messages[i].getFlags().contains(Flags.Flag.SEEN))

What this whole logic is doing is that it is trying to read OLD unread messages. The code comes back to line 348 and executes

folder.getMessages(1, batchSize);

again, and gets the same messages and it keeps on waiting. How can i change the order of fetch.

FYI: Using MS Exchange for IMAP

4

1 回答 1

0

不知道你为什么说骡子试图阅读“旧未读消息”?它实际上只是试图读取未读消息,即没有删除也没有看到。

无论如何,理论上 Mulesque 对消息进行排序的方式是使用resequencer。不幸的是,邮件消息接收者没有设置任何必需的控制属性来让 Mule 将接收到的消息作为一个批处理来处理,这样就无法工作了。

因此,我能想到的唯一解决方案是使用子元素org.mule.transport.email.RetrieveMessageReceiver在 IMAP 连接器上扩展和注册您的自定义版本。<service-overrides />

于 2013-04-29T20:14:18.617 回答