GH-9633: MailReceiver: also set flags into IntegrationMimeMessage

Fixes: #9633
Issue link: https://github.com/spring-projects/spring-integration/issues/9633

The message flags of the received messages are outdated and don't contain the changes of `AbstractMailReceiver#setMessageFlags`,
because the flags are only applied to the original message and not the copy (`AbstractMailReceiver.IntegrationMimeMessage`).

* Call `setMessageFlagsAndMaybeDeleteMessages()` for `IntegrationMimeMessage` copies as well

(cherry picked from commit 1d85d6b43c)
This commit is contained in:
Artem Bilan
2024-11-06 10:56:06 -05:00
committed by Spring Builds
parent 6eee926e7e
commit 22161b628d
2 changed files with 4 additions and 1 deletions

View File

@@ -516,6 +516,9 @@ public abstract class AbstractMailReceiver extends IntegrationObjectSupport impl
}
setMessageFlagsAndMaybeDeleteMessages(messages);
if (filteredMessages.length > 0 && filteredMessages[0] instanceof IntegrationMimeMessage) {
setMessageFlagsAndMaybeDeleteMessages(filteredMessages);
}
}
private void setMessageFlagsAndMaybeDeleteMessages(Message[] messages) throws MessagingException {

View File

@@ -452,7 +452,7 @@ public class ImapMailReceiverTests {
assertThat(msg1.getFlags().contains(Flag.SEEN)).isTrue();
assertThat(msg2.getFlags().contains(Flag.SEEN)).isTrue();
verify(receiver, times(1)).deleteMessages(Mockito.any());
verify(receiver, times(2)).deleteMessages(Mockito.any());
}
@Test