Class AbstractMailReceiver
java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.mail.AbstractMailReceiver
- All Implemented Interfaces:
Aware,BeanFactoryAware,BeanNameAware,DisposableBean,InitializingBean,ApplicationContextAware,ExpressionCapable,MailReceiver,NamedComponent
- Direct Known Subclasses:
ImapMailReceiver,Pop3MailReceiver
public abstract class AbstractMailReceiver
extends IntegrationObjectSupport
implements MailReceiver, DisposableBean
Base class for
MailReceiver implementations.- Author:
- Arjen Poutsma, Jonas Partner, Mark Fisher, Iwein Fuld, Oleg Zhurakousky, Gary Russell, Artem Bilan, Dominik Simmen, Yuxin Wang
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringDefault user flag for marking messages as seen by this receiver: "spring-integration-mail-adapter".Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport
EXPRESSION_PARSER, logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidprotected voiddeleteMessages(Message[] messages) Deletes the given messages from this receiver's folder.voiddestroy()protected voidfetchMessages(Message[] messages) Fetches the specified messages from this receiver's folder.protected Folderprotected intprotected Propertiesprotected Stringprotected voidonInit()Subclasses may implement this for initialization logic.protected voidObject[]receive()protected abstract Message[]Subclasses must implement this method to return new mail messages.protected voidsetAdditionalFlags(Message message) Optional method allowing you to set additional flags.voidsetAutoCloseFolder(boolean autoCloseFolder) Configure abooleanflag to close the folder automatically after a fetch (default) or populate an additionalIntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCEmessage header instead.voidsetEmbeddedPartsAsBytes(boolean embeddedPartsAsBytes) voidsetHeaderMapper(HeaderMapper<MimeMessage> headerMapper) Set the header mapper; if a header mapper is not provided, the message payload is aMimeMessage, when provided, the headers are mapped and the payload is theMimeMessagecontent.voidsetJavaMailAuthenticator(Authenticator javaMailAuthenticator) Optional, sets the Authenticator to be used to obtain a session.voidsetJavaMailProperties(Properties javaMailProperties) A newSessionwill be created with these properties (and the JavaMailAuthenticator if provided).voidsetMaxFetchSize(int maxFetchSize) Specify the maximum number of Messages to fetch per call toreceive().voidsetProtocol(String protocol) voidsetSelectorExpression(Expression selectorExpression) voidsetSession(Session session) Set theSession.voidsetShouldDeleteMessages(boolean shouldDeleteMessages) Specify whether mail messages should be deleted after retrieval.voidsetSimpleContent(boolean simpleContent) MimeMessage.getContent()returns just the email body.voidsetUserFlag(String userFlag) Set the name of the flag to use to flag messages when the server does not support \Recent but supports user flags; default "spring-integration-mail-adapter".protected booleanIndicates whether the mail messages should be deleted after being received.toString()Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport
afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getComponentType, getConversionService, getExpression, getIntegrationProperties, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler
-
Field Details
-
DEFAULT_SI_USER_FLAG
Default user flag for marking messages as seen by this receiver: "spring-integration-mail-adapter".- See Also:
-
-
Constructor Details
-
AbstractMailReceiver
public AbstractMailReceiver() -
AbstractMailReceiver
-
AbstractMailReceiver
-
-
Method Details
-
setSelectorExpression
-
setProtocol
-
setSession
Set theSession. Otherwise, the Session will be created by invocation ofSession.getInstance(Properties)orSession.getInstance(Properties, Authenticator).- Parameters:
session- The session.- See Also:
-
setJavaMailProperties
A newSessionwill be created with these properties (and the JavaMailAuthenticator if provided). Use either this method orsetSession(jakarta.mail.Session), but not both.- Parameters:
javaMailProperties- The javamail properties.- See Also:
-
getJavaMailProperties
-
setJavaMailAuthenticator
Optional, sets the Authenticator to be used to obtain a session. This will not be used ifsetSession(jakarta.mail.Session)has been used to configure theSessiondirectly.- Parameters:
javaMailAuthenticator- The javamail authenticator.- See Also:
-
setMaxFetchSize
public void setMaxFetchSize(int maxFetchSize) Specify the maximum number of Messages to fetch per call toreceive().- Parameters:
maxFetchSize- The max fetch size.
-
setShouldDeleteMessages
public void setShouldDeleteMessages(boolean shouldDeleteMessages) Specify whether mail messages should be deleted after retrieval.- Parameters:
shouldDeleteMessages- true to delete messages.
-
shouldDeleteMessages
protected boolean shouldDeleteMessages()Indicates whether the mail messages should be deleted after being received.- Returns:
- true when messages will be deleted.
-
getUserFlag
-
setUserFlag
Set the name of the flag to use to flag messages when the server does not support \Recent but supports user flags; default "spring-integration-mail-adapter".- Parameters:
userFlag- the flag.- Since:
- 4.2.2
-
setHeaderMapper
Set the header mapper; if a header mapper is not provided, the message payload is aMimeMessage, when provided, the headers are mapped and the payload is theMimeMessagecontent.- Parameters:
headerMapper- the header mapper.- Since:
- 4.3
- See Also:
-
setEmbeddedPartsAsBytes
public void setEmbeddedPartsAsBytes(boolean embeddedPartsAsBytes) When a header mapper is provided determine whether an embeddedPart(e.gMessageorMultipartcontent is rendered as a byte[] in the payload. Otherwise, leave as aPart. These objects are not suitable for downstream serialization. Default: true.This has no effect if there is no header mapper, in that case the payload is the
MimeMessage.- Parameters:
embeddedPartsAsBytes- the embeddedPartsAsBytes to set.- Since:
- 4.3
- See Also:
-
setSimpleContent
public void setSimpleContent(boolean simpleContent) MimeMessage.getContent()returns just the email body.foo
Some subclasses, such asIMAPMessagereturn some headers with the body.To: foo@bar From: bar@baz Subject: Test Email foo
Starting with version 5.0, messages emitted by mail receivers will render the content in the same way as theMimeMessageimplementation returned by javamail. In versions 2.2 through 4.3, the content was always just the body, regardless of the underlying message type (unless a header mapper was provided, in which case the payload was rendered by the underlyingMimeMessage.To revert to the previous behavior, set this flag to true. In addition, even if a header mapper is provided, the payload will just be the email body.
- Parameters:
simpleContent- true to render simple content.- Since:
- 5.0
-
setAutoCloseFolder
public void setAutoCloseFolder(boolean autoCloseFolder) Configure abooleanflag to close the folder automatically after a fetch (default) or populate an additionalIntegrationMessageHeaderAccessor.CLOSEABLE_RESOURCEmessage header instead. It is the downstream flow's responsibility to obtain this header and call itsclose()whenever it is necessary.Keeping the folder open is useful in cases where communication with the server is needed when parsing multipart content of the email with attachments.
The
setSimpleContent(boolean)andsetHeaderMapper(HeaderMapper)options are not affected by this flag.- Parameters:
autoCloseFolder-falsedo not close the folder automatically after a fetch.- Since:
- 5.2
-
getFolder
-
getFolderOpenMode
protected int getFolderOpenMode() -
searchForNewMessages
Subclasses must implement this method to return new mail messages.- Returns:
- An array of messages.
- Throws:
MessagingException- Any MessagingException.
-
openFolder
- Throws:
MessagingException
-
receive
- Specified by:
receivein interfaceMailReceiver- Throws:
MessagingException
-
closeFolder
protected void closeFolder() -
fetchMessages
Fetches the specified messages from this receiver's folder. Default implementationfetcheseveryFetchProfile.Item.- Parameters:
messages- the messages to fetch- Throws:
MessagingException- in case of JavaMail errors
-
deleteMessages
Deletes the given messages from this receiver's folder.- Parameters:
messages- the messages to delete- Throws:
MessagingException- in case of JavaMail errors
-
setAdditionalFlags
Optional method allowing you to set additional flags. Currently only implemented in IMapMailReceiver.- Parameters:
message- The message.- Throws:
MessagingException- A MessagingException.
-
destroy
public void destroy()- Specified by:
destroyin interfaceDisposableBean
-
onInit
protected void onInit()Description copied from class:IntegrationObjectSupportSubclasses may implement this for initialization logic.- Overrides:
onInitin classIntegrationObjectSupport
-
toString
- Overrides:
toStringin classIntegrationObjectSupport
-