我可以使用IMAP入站适配器中的mail-filter-expression属性拒绝基于发件人电子邮件ID的电子邮件
答案 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);
}
}