Package com.icegreen.greenmail.util
Class GreenMailProxy
- java.lang.Object
-
- com.icegreen.greenmail.configuration.ConfiguredGreenMail
-
- com.icegreen.greenmail.util.GreenMailProxy
-
- All Implemented Interfaces:
GreenMailOperations
- Direct Known Subclasses:
GreenMailRule
public abstract class GreenMailProxy extends ConfiguredGreenMail
Proxy that routes all operations to an internal greenmail instance
-
-
Constructor Summary
Constructors Constructor Description GreenMailProxy()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract GreenMail
getGreenMail()
ImapServer
getImap()
ImapServer
getImaps()
Managers
getManagers()
Pop3Server
getPop3()
Pop3Server
getPop3s()
jakarta.mail.internet.MimeMessage[]
getReceivedMessages()
jakarta.mail.internet.MimeMessage[]
getReceivedMessagesForDomain(String domain)
Gets all messages containing given domain.SmtpServer
getSmtp()
SmtpServer
getSmtps()
UserManager
getUserManager()
GreenMailOperations
loadEmails(Path path)
Loads emails from given path.void
purgeEmailFromAllMailboxes()
Remove/purge all data from all mail stores (POP3/IMAP)void
reset()
Restart the GreenMail server.void
setQuotaSupported(boolean isEnabled)
Toggles the IMAP quota support.GreenMailUser
setUser(String login, String password)
Sets the password for the account linked to email.GreenMailUser
setUser(String email, String login, String password)
Sets the password for the account linked to email.void
setUsers(Properties users)
Sets up accounts with password based on a properties map where the key is the email/login and the value the passwordvoid
start()
Start the GreenMail servervoid
stop()
Stop the GreenMail server.boolean
waitForIncomingEmail(int emailCount)
Does the same thing asGreenMailOperations.waitForIncomingEmail(long, int)
but with a default timeout of 5000msboolean
waitForIncomingEmail(long timeout, int emailCount)
Use this method if you are sending email in a different thread from the one you're testing from.-
Methods inherited from class com.icegreen.greenmail.configuration.ConfiguredGreenMail
doConfigure, withConfiguration
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.icegreen.greenmail.base.GreenMailOperations
isRunning
-
-
-
-
Method Detail
-
getSmtp
public SmtpServer getSmtp()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getImap
public ImapServer getImap()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getPop3
public Pop3Server getPop3()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getSmtps
public SmtpServer getSmtps()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getImaps
public ImapServer getImaps()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getPop3s
public Pop3Server getPop3s()
- Returns:
- SMTP server operated by this GreenMail instance or null if there is none
-
getManagers
public Managers getManagers()
- Returns:
- Greenmail protocol managers
-
getUserManager
public UserManager getUserManager()
- Returns:
- the user manager for
-
waitForIncomingEmail
public boolean waitForIncomingEmail(long timeout, int emailCount)
Description copied from interface:GreenMailOperations
Use this method if you are sending email in a different thread from the one you're testing from. Block waits for an email to arrive in any mailbox for any user. Implementation Detail: No polling wait implementation- Parameters:
timeout
- maximum time in ms to wait for emailCount of messages to arrive before giving up and returning falseemailCount
- waits for these many emails to arrive before returning- Returns:
- Returns false if timeout period was reached, otherwise true.
-
waitForIncomingEmail
public boolean waitForIncomingEmail(int emailCount)
Description copied from interface:GreenMailOperations
Does the same thing asGreenMailOperations.waitForIncomingEmail(long, int)
but with a default timeout of 5000ms- Parameters:
emailCount
- waits for these many emails to arrive before returning- Returns:
- Returns false if timeout period was reached, otherwise true.
-
getReceivedMessages
public jakarta.mail.internet.MimeMessage[] getReceivedMessages()
- Returns:
- Returns all messages in all folders for all users
GreenMailUtil
has a bunch of static helper methods to extract body text etc.
-
getReceivedMessagesForDomain
public jakarta.mail.internet.MimeMessage[] getReceivedMessagesForDomain(String domain)
Description copied from interface:GreenMailOperations
Gets all messages containing given domain.- Parameters:
domain
- the domain, such as 'icegreen.com' or 'some.example.com'- Returns:
- Returns all received messages for given domain.
-
setUser
public GreenMailUser setUser(String login, String password)
Description copied from interface:GreenMailOperations
Sets the password for the account linked to email. If no account exits, one is automatically created when an email is received The automatically created account has the account login and password equal to the email address.- Parameters:
login
- Login for which the password should be set. This is assumed to be the same as the email address.password
- New password- Returns:
- the user created
-
setUser
public GreenMailUser setUser(String email, String login, String password)
Description copied from interface:GreenMailOperations
Sets the password for the account linked to email. If no account exits, one is automatically created when an email is received The automatically created account has the account login and password equal to the email address.- Parameters:
email
- Email address for which the password should be setlogin
- Login name for login. This may be different to the email address. E.g. the email address could be "info@localhost", the login could be "info".password
- New password- Returns:
- the user created
-
setUsers
public void setUsers(Properties users)
Description copied from interface:GreenMailOperations
Sets up accounts with password based on a properties map where the key is the email/login and the value the password- Parameters:
users
- User/password map
-
setQuotaSupported
public void setQuotaSupported(boolean isEnabled)
Description copied from interface:GreenMailOperations
Toggles the IMAP quota support. Quotas are enabled by default.- Parameters:
isEnabled
- true, if quotas should be supported.
-
start
public void start()
Description copied from interface:GreenMailOperations
Start the GreenMail server
-
stop
public void stop()
Description copied from interface:GreenMailOperations
Stop the GreenMail server. Clear all data (send messages, users, ...).
-
reset
public void reset()
Description copied from interface:GreenMailOperations
Restart the GreenMail server. Clear all data (send messages, users, ...)
-
purgeEmailFromAllMailboxes
public void purgeEmailFromAllMailboxes() throws FolderException
Description copied from interface:GreenMailOperations
Remove/purge all data from all mail stores (POP3/IMAP)- Throws:
FolderException
- on error
-
loadEmails
public GreenMailOperations loadEmails(Path path) throws FolderException, IOException
Description copied from interface:GreenMailOperations
Loads emails from given path.-
Expected structure in provided path, containing EML (rfc0822) mail files
Pattern:
<EMAIL> / <FOLDER*> / <*.eml>
Example:
├── bar@localhost (directory) │ └── INBOX (directory) │ └── test-5.eml (file) └── foo@localhost (directory) └── Drafts (directory) └── draft.eml (file)
- Creates user of given email if missing (by convention, with email as login and password)
- Creates intermediate mail folder if missing
- Parameters:
path
- base path with email structure- Throws:
FolderException
- if e.g. fails to create intermediate folderIOException
- on IO error
-
Expected structure in provided path, containing EML (rfc0822) mail files
-
getGreenMail
protected abstract GreenMail getGreenMail()
- Returns:
- Greenmail instance provided by child class
-
-