#java #gmail #spring-integration #imap
#java #gmail #spring-интеграция #imap
Вопрос:
Я получаю входящие сообщения в свою учетную запись gmail с помощью Spring integration mail. Сообщения принимаются без проблем, но в моей учетной записи gmail они всегда помечаются как прочитанные. Вот моя конфигурация XML:
<int:channel id="receiveChannel"/>
replace 'userid and 'password' with the real values
<int-mail:imap-idle-channel-adapter id="customAdapter"
store-uri="imaps://proximahaiz@gmail.com:myPassword@imap.gmail.com:993/inbox"
channel="receiveChannel"
auto-startup="true"
should-delete-messages="false"
should-mark-messages-as-read="false"
java-mail-properties="javaMailProperties"
/>
<util:properties id="javaMailProperties">
<prop key="mail.imap.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop>
<prop key="mail.imap.socketFactory.fallback">false</prop>
<prop key="mail.store.protocol">imaps</
<prop key="mail.debug">false</prop>
</
Я добавил параметр should-mark-messages-as-read = «false», но все получаемые сообщения по-прежнему помечаются как прочитанные.
Я использую версию Spring Integration версии 4.2.9.RELEASE.
Это мой java-код:
public class GmailInboundImapIdleAdapterServiceImpl implements GmailInboundImapIdleAdapterService {
private static Logger logger = Logger.getLogger(GmailInboundImapIdleAdapterServiceImpl.class);
private static String MAIL_SUBJECT = "mail_subject";
private static String MAIL_FROM = "mail_from";
private static EmailParser emailParser = new EmailParser();
@Autowired
private EmailReceiverService emailReceiverService;
@Override
public void startReceiveEmails() {
ApplicationContext acProxy = new ClassPathXmlApplicationContext("/integration/gmail-imap-idle-config-proxytest.xml");
DirectChannel inputChannelProxy = acProxy.getBean("receiveChannel", DirectChannel.class);
inputChannelProxy.subscribe(new MessageHandler() {
@Override
public void handleMessage(Message<?> message) throws MessagingException {
initMessageReceiving(message);
}
});
}
Что мне сделать, чтобы оставлять сообщения, помеченные как непрочитанные, в учетной записи gmail после того, как я получил их в свое приложение?
Ответ №1:
Измените mail.debug
свойство java на true
.
Если для флага should mark messages read установлено значение false, адаптер не должен устанавливать Seen
флаг, который можно подтвердить, просмотрев выходные данные отладки.
В этом случае Gmail может не соблюдать протокол IMAP и использовать некоторые другие критерии для пометки сообщения как прочитанного.
Комментарии:
1. И для этого необходимо использовать ВЫБОРКУ. ПРОСМОТР, а не ВЫБОРКА, или ПРОВЕРКА, а не ВЫБОР.
2. Спасибо за быстрый ответ. Загруженные журналы, разве вы не можете их увидеть и сказать, что не так?
3. Вам нужно показать больше журнала; это показывает только поиск. Разве вы не можете загрузить все это в виде текстового файла?