|
xmlBlaster 1.6.2 API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Objectjavax.mail.Authenticator
org.xmlBlaster.util.protocol.email.Pop3Driver
This class is capable to poll for emails using the POP3 protocol.
Configuration is done in xmlBlasterPlugins.xml:
<plugin id='pop3' className='org.xmlBlaster.util.protocol.email.Pop3Driver'>
<action do='LOAD' onStartupRunlevel='7' sequence='2'
onFail='resource.configuration.pluginFailed'/>
<action do='STOP' onShutdownRunlevel='7' sequence='5'/>
<attribute id='mail.pop3.url'>pop3://xmlBlaster:xmlBlaster@localhost:110/INBOX</attribute>
<attribute id='pop3PollingInterval'>500</attribute>
</plugin>
Switch on logging with
-logging/org.xmlBlaster.util.protocol.email.Pop3Driver FINEand add to xmlBlasterJdk14Logging.properties:
handlers = org.xmlBlaster.util.log.XmlBlasterJdk14LoggingHandler.level = FINESTStandalone test:
1. Start a command line poller for user 'xmlBlaster': java -Dmail.pop3.url=pop3://xmlBlaster:xmlBlaster@localhost/INBOX org.xmlBlaster.util.protocol.email.Pop3Driver -receivePolling 2. Send from command line an email: java -Dmail.smtp.url=smtp://xmlBlaster:xmlBlaster@localhost org.xmlBlaster.util.protocol.email.SmtpClient -from xmlBlaster@localhost -to xmlBlaster@localhost
TODO: Implement reusing inbox.getMessage() for better performance currently we reconnect for each query ( the benefit is that we don't block the POP3 server with a permanent connection).
| Field Summary | |
private javax.mail.PasswordAuthentication |
authentication
|
static boolean |
CLEAR_MESSAGES
|
private ContextNode |
contextNode
|
static java.lang.String |
DISCARD
|
private boolean |
firstException
|
private Global |
glob
|
private long |
holdbackExpireTimeout
|
private java.util.Map |
holdbackMap
|
private boolean |
isConnected
|
static boolean |
LEAVE_MESSAGES
|
private java.util.Map |
listeners
|
private static java.util.logging.Logger |
log
|
private java.lang.Object |
mbeanHandle
My JMX registration |
static java.lang.String |
OBJECTENTRY_KEY
|
private I_PluginConfig |
pluginConfig
|
private long |
pollingInterval
|
static java.lang.String |
POP3_FOLDER
|
private java.lang.String |
pop3Url
|
private java.util.Properties |
props
|
private javax.mail.Session |
session
|
static java.lang.String |
threadName
|
private Timeout |
timeout
|
private Timestamp |
timeoutHandle
|
protected XbUri |
xbUri
|
| Fields inherited from class javax.mail.Authenticator |
|
| Constructor Summary | |
Pop3Driver()
You need to call setSessionProperties() thereafter. |
|
| Method Summary | |
void |
activate()
Activate xmlBlaster access through this protocol. |
void |
deActivate()
Deactivate xmlBlaster access (standby), no clients can connect. |
int |
deregisterForEmail(I_ResponseListener listener)
Deregister all existing registrations for the given listener. |
java.lang.Object |
deregisterForEmail(java.lang.String secretSessionId,
java.lang.String requestId)
|
java.lang.String |
getEnvPrefix()
The command line key prefix |
long |
getHoldbackExpireTimeout()
|
private java.lang.Long[] |
getHoldbackTimestamps()
|
java.util.Map.Entry[] |
getListenerInterfaces()
|
java.lang.String[] |
getListenerKeys()
|
java.lang.String |
getListeners()
Access a list of registered java listeners. |
javax.mail.Message |
getMessage()
|
java.lang.String |
getMyEmailAddress()
Returns for example "demo@localhost" which is extracted from pop3Url="pop3://demo:secret@localhost:110/INBOX" |
int |
getNumberOfHoldbackEmails()
Get the number of received emails for which no java bean is interested. |
javax.mail.PasswordAuthentication |
getPasswordAuthentication()
Used by Authenticator to access user name and password |
long |
getPollingInterval()
Access the polling interval |
static Pop3Driver |
getPop3Driver(Global glob,
I_PluginConfig pluginConfig)
The Pop3Driver is a singleton in the Global scope. |
java.lang.String |
getPop3Url()
Access the POP3 MTA access configuration |
java.lang.String |
getProtocolId()
Access the xmlBlaster internal name of the protocol driver. |
javax.mail.Session |
getSession()
Access the mailing session. |
private javax.mail.Store |
getStore()
Connect to POP3 store. |
java.lang.String |
getType()
Enforced by I_Plugin |
java.lang.String |
getUrlWithoutPassword()
Returns for example "pop3://demo@localhost:110/INBOX" which is extracted from pop3Url="pop3://demo:secret@localhost:110/INBOX" |
java.lang.String |
getUsageUrl()
|
java.lang.String |
getVersion()
Enforced by I_Plugin |
private void |
handleLostEmail(EmailData emailData)
|
void |
init(Global glob,
I_PluginConfig pluginConfig)
|
void |
init(Global glob,
PluginInfo pluginInfo)
This method is called by the PluginManager (enforced by I_Plugin). |
boolean |
isActive()
Access the current state |
boolean |
isShutdown()
Check status |
static void |
main(java.lang.String[] args)
java -Dmail.pop3.url=pop3://blue:blue@localhost:110/INBOX org.xmlBlaster.util.protocol.email.Pop3Driver -receivePolling true -clearMessages false |
private java.lang.String |
notify(EmailData emailData,
boolean calledFromHoldbackMap)
Notify a listener about a new email. |
EmailData[] |
readInbox(boolean clear)
Read messages from mail server with POP3. |
void |
registerForEmail(java.lang.String secretSessionId,
java.lang.String requestId,
I_ResponseListener listener)
If you are interested in an email register it here. |
protected java.lang.String |
retrieveContent(javax.mail.internet.MimePart part)
Get content text. |
void |
setHoldbackExpireTimeout(long holdbackExpireTimeout)
Configure how long a not yet dispatched message shall live in the Pop3Driver map. |
void |
setPollingInterval(long pollingInterval)
Set the polling interval |
void |
setPop3Url(java.lang.String pop3Url)
|
void |
setSessionProperties(java.util.Properties properties,
Global glob,
I_PluginConfig pluginConfig)
Set session properties and create a session. |
void |
setUsageUrl(java.lang.String url)
|
void |
shutdown()
Halt the plugin. |
void |
timeout(java.lang.Object userData)
Polling for response messages. |
private void |
tryToDeliverHoldbackMails()
Try to deliver hold back messages to local registrars. |
java.lang.String |
usage()
JMX |
| Methods inherited from class javax.mail.Authenticator |
getDefaultUserName, getRequestingPort, getRequestingPrompt, getRequestingProtocol, getRequestingSite |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
private static java.util.logging.Logger log
private Global glob
private ContextNode contextNode
private javax.mail.Session session
private java.lang.String pop3Url
private I_PluginConfig pluginConfig
private Timeout timeout
private Timestamp timeoutHandle
private long pollingInterval
private java.util.Properties props
private final java.util.Map listeners
private boolean firstException
private boolean isConnected
private javax.mail.PasswordAuthentication authentication
protected XbUri xbUri
private java.lang.Object mbeanHandle
private java.util.Map holdbackMap
private long holdbackExpireTimeout
public static final boolean CLEAR_MESSAGES
public static final boolean LEAVE_MESSAGES
public static final java.lang.String POP3_FOLDER
public static java.lang.String threadName
public static final java.lang.String OBJECTENTRY_KEY
public static final java.lang.String DISCARD
| Constructor Detail |
public Pop3Driver()
| Method Detail |
public static Pop3Driver getPop3Driver(Global glob,
I_PluginConfig pluginConfig)
throws XmlBlasterException
glob - pluginConfig -
XmlBlasterExceptionpublic javax.mail.PasswordAuthentication getPasswordAuthentication()
public void init(Global glob,
PluginInfo pluginInfo)
throws XmlBlasterException
init in interface I_PluginXmlBlasterExceptionI_Plugin.init(org.xmlBlaster.util.Global,org.xmlBlaster.util.plugin.PluginInfo)
public void init(Global glob,
I_PluginConfig pluginConfig)
throws XmlBlasterException
XmlBlasterExceptionpublic java.lang.String getProtocolId()
public java.lang.String getType()
getType in interface I_Plugin
public void registerForEmail(java.lang.String secretSessionId,
java.lang.String requestId,
I_ResponseListener listener)
listener -
public java.lang.Object deregisterForEmail(java.lang.String secretSessionId,
java.lang.String requestId)
public int deregisterForEmail(I_ResponseListener listener)
listener - The listener to cleanup
public java.util.Map.Entry[] getListenerInterfaces()
public java.lang.String[] getListenerKeys()
public java.lang.String getListeners()
I_AdminPop3Driver
getListeners in interface I_AdminPop3Driverprivate void handleLostEmail(EmailData emailData)
private java.lang.String notify(EmailData emailData,
boolean calledFromHoldbackMap)
emailData - calledFromHoldbackMap - is true if we try a redelivery
public java.lang.String getEnvPrefix()
public java.lang.String getVersion()
getVersion in interface I_Plugin
public void setSessionProperties(java.util.Properties properties,
Global glob,
I_PluginConfig pluginConfig)
throws XmlBlasterException
Example settings:
Properties props = System.getProperties();
props.put("mail.pop3.url", "pop3://joe:secret@localhost/INBOX");
props.put("mail.debug", "false");
Usage is "pop3://user:password@host:port/INBOX". Only 'INBOX' is supported for pop3. If a property is not found System.getProperty() is consulted.
XmlBlasterExceptionprivate java.lang.Long[] getHoldbackTimestamps()
private void tryToDeliverHoldbackMails()
public void timeout(java.lang.Object userData)
timeout in interface I_TimeoutuserData - You get bounced back your userData which you passed
with Timeout.addTimeoutListener()public javax.mail.Session getSession()
public javax.mail.Message getMessage()
public java.lang.String getMyEmailAddress()
public java.lang.String getUrlWithoutPassword()
private javax.mail.Store getStore()
throws XmlBlasterException
XmlBlasterException
public EmailData[] readInbox(boolean clear)
throws XmlBlasterException
Convenience method which returns the most important fields only
clear - If CLEAR_MESSAGES=true the messages are destroyed on the server
XmlBlasterExceptionpublic java.lang.String getPop3Url()
I_AdminPop3Driver
getPop3Url in interface I_AdminPop3Driverpublic void setPop3Url(java.lang.String pop3Url)
setPop3Url in interface I_AdminPop3Driverpop3Url - Syntax is "pop3://user:password@host:port/INBOX"public long getPollingInterval()
I_AdminPop3Driver
getPollingInterval in interface I_AdminPop3Driverpublic void setPollingInterval(long pollingInterval)
I_AdminPop3Driver
setPollingInterval in interface I_AdminPop3DriverpollingInterval - The timeout in milliseconds.
protected java.lang.String retrieveContent(javax.mail.internet.MimePart part)
throws javax.mail.MessagingException,
java.io.IOException
part - the MimePart to check for content
javax.mail.MessagingException
java.io.IOException
public void activate()
throws java.lang.Exception
activate in interface I_AdminServicejava.lang.Exceptionpublic boolean isActive()
I_AdminService
isActive in interface I_AdminServicepublic void deActivate()
deActivate in interface I_AdminServicepublic void shutdown()
shutdown in interface I_Pluginpublic boolean isShutdown()
I_AdminPlugin
isShutdown in interface I_AdminPluginpublic java.lang.String usage()
usage in interface I_AdminUsagepublic java.lang.String getUsageUrl()
getUsageUrl in interface I_AdminUsagepublic void setUsageUrl(java.lang.String url)
setUsageUrl in interface I_AdminUsagepublic long getHoldbackExpireTimeout()
getHoldbackExpireTimeout in interface I_AdminPop3Driverpublic void setHoldbackExpireTimeout(long holdbackExpireTimeout)
I_AdminPop3Driver
setHoldbackExpireTimeout in interface I_AdminPop3DriverholdbackExpireTimeout - The holdbackExpireTimeout to set.public int getNumberOfHoldbackEmails()
I_AdminPop3Driver
getNumberOfHoldbackEmails in interface I_AdminPop3Driverpublic static void main(java.lang.String[] args)
for other properties
|
xmlBlaster 1.6.2 API | ||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||