Существует несколько способов фильтрации писем по определенной теме:
<сильный>1. Используйте фильтры для транспорта электронной почты
MuleSoft предоставляет две реализации для транспорта входящей электронной почты (POP3, SMTP, IMAP):
org.mule.providers.email.filters.AbstractMailFilter: базовая реализация фильтра, которая должна быть расширена любым другим почтовым фильтром.
org.mule.providers.email.filters.MailSubjectRegExFilter: применяет регулярное выражение к теме почтового сообщения.
Например, вы можете определить MailSubjectRegExFilter
следующим образом:
<flow>
<pop3s:inbound-endpoint doc:name="Poll emails" host="${email.host}" password="${email.password}" port="${email.port}" responseTimeout="10000" user="${email.user}"/>
<custom-filter class="org.mule.transport.email.filters.MailSubjectRegExFilter" doc:name="Custom">
<message-property-filter pattern="subject=mySubject" caseSensitive="true" doc:name="Message Property"/>
</custom-filter>
...
</flow>
Дополнительную информацию можно найти в следующей документации MuleSoft:
<сильный>2. Используйте фильтр сообщений
Из сообщения в блоге MuleSoft Шаблоны интеграции: фильтр сообщений :
Используйте специальный тип маршрутизатора сообщений, фильтр сообщений, чтобы исключить нежелательные сообщения из канала на основе набора критериев.
Пример потока:
<flow name="flowWithFilter">
<jms:inbound-endpoint queue="inQueue"/>
<message-filter onUnaccepted="DeadLetterQueueFlow" throwOnUnaccepted="false">
<expression-filter evaluator="xpath" expression="/order/@type = 'book'">
</message-filter>
<jms:outbound-endpoint queue="outQueue"/>
</flow>
Проверьте статью для получения дополнительных примеров и конфигураций.
<сильный>3. Создайте собственный фильтр
Создайте класс Java, который реализует «Фильтр» и оцените, соответствует ли тема вашим критериям. Приведенные ниже примеры взяты из статьи Как добавить пользовательский фильтр к конечной точке входящей электронной почты и обратиться к IMAP, но это должно быть похоже на POP3.
XML-конфигурация:
<flow name="main">
<imaps:inbound-endpoint connector-ref="imapsConnector" user="[email protected]" password="theAccountPassword" host="imap.gmail.com" port="993" doc:name="IMAP">
<message-filter>
<custom-filter class="filters.MyCustomEmailFilter" />
</message-filter>
</imaps:inbound-endpoint>
<logger level="INFO" message="Email matched filter, do processing..." doc:name="Logger" />
</flow>
Класс фильтра:
public class MyCustomEmailFilter implements Filter {
@Override
public boolean accept(MuleMessage message) {
MimeMessage emailMessage = (MimeMessage) message.getOriginalPayload();
try {
return customEvalLogic(emailMessage);
} catch (MessagingException e) {
throw new MuleRuntimeException(e);
}
}
private boolean customEvalLogic(MimeMessage emailMessage) throws MessagingException {
return emailMessage.getSubject().contains("order"); // Please define custom email filter criteria here
}
}
person
CountD
schedule
03.03.2017