gpt4 book ai didi

java - 轮询后将邮件标记为未读 - Apache Camel

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:16 26 4
gpt4 key购买 nike

我正在使用 apache camel,通过轮询消费者,轮询时我的邮件被标记为已读。

options : delete=false&peek=false&unseen=true

轮询后,当我处理附件时,如果发生任何错误,我想将邮件设置为“未读”。这样我以后就可以再次打球了。

public void process(Exchange exchange) throws Exception {
Map<String, DataHandler> attachments = exchange.getIn().getAttachments();

Message messageCopy = exchange.getIn().copy();

if (messageCopy.getAttachments().size() > 0) {
for (Map.Entry<String, DataHandler> entry : messageCopy.getAttachments().entrySet()) {

DataHandler dHandler = entry.getValue();

// get the file name
String filename = dHandler.getName();

// get the content and convert it to byte[]
byte[] data =
exchange.getContext().getTypeConverter().convertTo(byte[].class, dHandler.getInputStream());

log.info("Downloading attachment, file name : " + filename);
InputStream fileInputStream = new ByteArrayInputStream(data);
try {
// Processing attachments
// if any error occurs here, i want to make the mail mark as unread
} catch (Exception e) {
log.info(e.getMessage());
}
}
}
}

我注意到选项 peek,通过将其设置为 true,它不会在轮询期间使邮件标记为已读,在这种情况下是否有任何选项可以使其标记为已读 处理后。

最佳答案

要得到你想要的结果你应该有选择

peek=true&unseen=true

peek=true 选项应该确保邮件在邮件服务器上保持与轮询之前相同的确切状态,即使出现异常也是如此。但是,目前它不起作用。这实际上是 Camel Mail 组件中的一个错误。我已经向 https://issues.apache.org/jira/browse/CAMEL-9106 提交了一个补丁这可能会在未来的版本中得到修复。

作为变通方法,您可以设置 ma​​pMailMessages=false,但您必须自己处理电子邮件内容。在 Camel 2.15 之后,你也有 postProcessAction 选项,你可能会从有处理错误的消息中删除 SEEN 标志。不过,我还是建议等待修复。

关于java - 轮询后将邮件标记为未读 - Apache Camel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com