public abstract class AbstractMailReceiver extends IntegrationObjectSupport implements MailReceiver, DisposableBean
MailReceiver
implementations.Modifier and Type | Field and Description |
---|---|
static String |
DEFAULT_SI_USER_FLAG
Default user flag for marking messages as seen by this receiver:
"spring-integration-mail-adapter".
|
protected int |
folderOpenMode |
protected boolean |
initialized |
protected Log |
logger |
EXPRESSION_PARSER
Constructor and Description |
---|
AbstractMailReceiver() |
AbstractMailReceiver(String url) |
AbstractMailReceiver(URLName urlName) |
Modifier and Type | Method and Description |
---|---|
protected void |
deleteMessages(Message[] messages)
Deletes the given messages from this receiver's folder.
|
void |
destroy() |
protected void |
fetchMessages(Message[] messages)
Fetches the specified messages from this receiver's folder.
|
protected Folder |
getFolder() |
protected Properties |
getJavaMailProperties() |
protected String |
getUserFlag() |
protected void |
onInit()
Subclasses may implement this for initialization logic.
|
protected void |
openFolder() |
Object[] |
receive() |
protected abstract Message[] |
searchForNewMessages()
Subclasses must implement this method to return new mail messages.
|
protected void |
setAdditionalFlags(Message message)
Optional method allowing you to set additional flags.
|
void |
setEmbeddedPartsAsBytes(boolean embeddedPartsAsBytes)
|
void |
setHeaderMapper(HeaderMapper<MimeMessage> headerMapper)
Set the header mapper; if a header mapper is not provided, the message payload is
a
MimeMessage , when provided, the headers are mapped and the payload is
the MimeMessage content. |
void |
setJavaMailAuthenticator(Authenticator javaMailAuthenticator)
Optional, sets the Authenticator to be used to obtain a session.
|
void |
setJavaMailProperties(Properties javaMailProperties)
A new
Session will be created with these properties (and the JavaMailAuthenticator if provided). |
void |
setMaxFetchSize(int maxFetchSize)
Specify the maximum number of Messages to fetch per call to
receive() . |
void |
setProtocol(String protocol) |
void |
setSelectorExpression(Expression selectorExpression) |
void |
setSession(Session session)
Set the
Session . |
void |
setShouldDeleteMessages(boolean shouldDeleteMessages)
Specify whether mail messages should be deleted after retrieval.
|
void |
setUserFlag(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 boolean |
shouldDeleteMessages()
Indicates whether the mail messages should be deleted after being received.
|
String |
toString() |
afterPropertiesSet, extractTypeIfPossible, getApplicationContext, getApplicationContextId, getBeanFactory, getChannelResolver, getComponentName, getComponentType, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler
public static final String DEFAULT_SI_USER_FLAG
protected final Log logger
protected volatile int folderOpenMode
protected volatile boolean initialized
public AbstractMailReceiver()
public AbstractMailReceiver(URLName urlName)
public AbstractMailReceiver(String url)
public void setSelectorExpression(Expression selectorExpression)
public void setProtocol(String protocol)
public void setSession(Session session)
Session
. Otherwise, the Session will be created by invocation of
Session.getInstance(Properties)
or Session.getInstance(Properties, Authenticator)
.session
- The session.setJavaMailProperties(Properties)
,
setJavaMailAuthenticator(Authenticator)
public void setJavaMailProperties(Properties javaMailProperties)
Session
will be created with these properties (and the JavaMailAuthenticator if provided).
Use either this method or setSession(javax.mail.Session)
, but not both.javaMailProperties
- The javamail properties.setJavaMailAuthenticator(Authenticator)
,
setSession(Session)
protected Properties getJavaMailProperties()
public void setJavaMailAuthenticator(Authenticator javaMailAuthenticator)
setSession(javax.mail.Session)
has been used to configure the Session
directly.javaMailAuthenticator
- The javamail authenticator.setSession(Session)
public void setMaxFetchSize(int maxFetchSize)
receive()
.maxFetchSize
- The max fetch size.public void setShouldDeleteMessages(boolean shouldDeleteMessages)
shouldDeleteMessages
- true to delete messages.protected boolean shouldDeleteMessages()
protected String getUserFlag()
public void setUserFlag(String userFlag)
userFlag
- the flag.public void setHeaderMapper(HeaderMapper<MimeMessage> headerMapper)
MimeMessage
, when provided, the headers are mapped and the payload is
the MimeMessage
content.headerMapper
- the header mapper.setEmbeddedPartsAsBytes(boolean)
public void setEmbeddedPartsAsBytes(boolean embeddedPartsAsBytes)
Part
(e.g
Message
or Multipart
content is rendered as a byte[] in the
payload. Otherwise, leave as a Part
. 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
.
embeddedPartsAsBytes
- the embeddedPartsAsBytes to set.setHeaderMapper(HeaderMapper)
protected Folder getFolder()
protected abstract Message[] searchForNewMessages() throws MessagingException
MessagingException
- Any MessagingException.protected void openFolder() throws MessagingException
MessagingException
public Object[] receive() throws MessagingException
receive
in interface MailReceiver
MessagingException
protected void fetchMessages(Message[] messages) throws MessagingException
fetches
every FetchProfile.Item
.messages
- the messages to fetchMessagingException
- in case of JavaMail errorsprotected void deleteMessages(Message[] messages) throws MessagingException
messages
- the messages to deleteMessagingException
- in case of JavaMail errorsprotected void setAdditionalFlags(Message message) throws MessagingException
message
- The message.MessagingException
- A MessagingException.public void destroy() throws Exception
destroy
in interface DisposableBean
Exception
protected void onInit() throws Exception
IntegrationObjectSupport
onInit
in class IntegrationObjectSupport
Exception
- Any exception.public String toString()
toString
in class IntegrationObjectSupport