Spring集成入站电子邮件适配器

时间:2014-08-13 19:45:55

标签: spring spring-integration

我可以使用IMAP入站适配器中的mail-filter-expression属性拒绝基于发件人电子邮件ID的电子邮件

1 个答案:

答案 0 :(得分:0)

如果你的意思是“拒绝”,你的意思是从AbstractMailReceiver ...

中忽略,然后是
if (this.selectorExpression.getValue(this.evaluationContext, message, Boolean.class)) {
    filteredMessages.add(message);
}
else {
    if (logger.isDebugEnabled()){
        logger.debug("Fetched email with subject '" + message.getSubject() + "' will be discarded by the matching filter" +
                        " and will not be flagged as SEEN.");
    }
}

编辑:

表达式的#root对象是MimeMessage; getFrom()会返回Address[],例如

"from == null || from.length == 0 ? false : from[0].toString().contains('something.org') ? true : false" 

应该有用。

对于更复杂的东西,您可以编写Java类,将其定义为bean,并从表达式"@myMailFilter.filter(#root)"引用它。

EDIT2:

请注意,如果使用IMAP,您还可以使用search-term-strategy来限制甚至考虑(检索)的电子邮件。

例如:

@Override
public SearchTerm generateSearchTerm(Flags supportedFlags, Folder folder) {
    try {
        return new FromTerm(new InternetAddress("*@something.org"));
    }
    catch (AddressException e) {
        throw new RuntimeException(e);
    }
}