Class MailServices


  • public class MailServices
    extends Object
    This class provides mail services like POP3 and SMTP for the acceptance tests. It will try to find free TCP/IP ports for the services within a given range.
    • Constructor Detail

      • MailServices

        public MailServices​(int portRangeStart,
                            int portRangeEnd,
                            String hostName)
    • Method Detail

      • start

        public void start()
                   throws Exception
        Tries to start a SMTP and a POP3 server on any free port in the range given in the constructor.
        Throws:
        BindException - if there is no free port available in the given range
        Exception
      • stop

        public void stop()
        Stops the SMTP and POP3 server.
      • isRunning

        public boolean isRunning()
        Returns true if the mail servers are running.
      • addUser

        public void addUser​(String email,
                            String login,
                            String password)
        Adds a user to the mail service. The SMTP server will then accept incoming mails for email and you can fetch these mails via POP3 using login/password for authentication.
        Parameters:
        email - email of the user to be created
        login - login of the user to be created
        password - password of the user to be created
      • addUser

        public void addUser​(User user)
        Adds a user to the mail service. The SMTP server will then accept incoming mails for email and you can fetch these mails via POP3 using login/password for authentication.
        Parameters:
        user - the user to be created - only the email and password fields are needed
      • addUser

        public void addUser​(MailUser user)
      • getHostName

        public String getHostName()
        Returns:
        the host name the mail services are bound to
      • getPop3Port

        public int getPop3Port()
        Returns:
        the port the POP3 server is bound to
      • getSmtpPort

        public int getSmtpPort()
        Returns:
        the port the SMTP server is bound to
      • getPort

        public int getPort​(String protocol)
        Parameters:
        protocol - the name of the protocol you want the port number (like "pop3", "pop3s", "smtp", "smtps", "imap", "imaps"...)
        Returns:
        the port number, -1 if protocol is unknown
      • sendTextMessage

        public void sendTextMessage​(String to,
                                    String from,
                                    String subject,
                                    String body)
        Sends an email with the content type "text/plain" and the given contents using the test SMTP server.
        Parameters:
        to - email address this mail should be sent to
        from - email address this mail should appear to be sent from
        subject - subject of the email
        body - body of the email
      • sendMimeMessage

        public void sendMimeMessage​(InputStream messageStream)
        Sends an email based on a MimeMessage input stream, most likely read from a file.
        Parameters:
        messageStream - input stream of the Mime message to send
      • getReceivedMessages

        public javax.mail.internet.MimeMessage[] getReceivedMessages()
        Returns an array of all messages received until now.
        Returns:
        all received messages
      • getReceivedMessage

        public javax.mail.internet.MimeMessage getReceivedMessage()
        Get the first message of all messages received until now.
        Returns:
        the first message received as MimeMessage or null if there was no message received
      • waitAndGetReceivedMessage

        public javax.mail.internet.MimeMessage waitAndGetReceivedMessage()
        Does the same as getReceivedMessage() but waits until a message is received or until a timeout is reached.
        Returns:
        the first message received as MimeMessage or null if there was no message received
        Throws:
        InterruptedException
      • waitAndGetReceivedMessages

        public javax.mail.internet.MimeMessage[] waitAndGetReceivedMessages​(int numMessages)
        Does the same as getReceivedMessages() but waits until a message is received or until a timeout is reached.
        Returns:
        the first message received as MimeMessage or null if there was no message received
        Throws:
        InterruptedException
      • waitAndGetReceivedMessages

        public javax.mail.internet.MimeMessage[] waitAndGetReceivedMessages​(long timeout,
                                                                            int numMessages)
        Does the same as getReceivedMessages() but waits until a message is received or until specified timeout is reached.
        Returns:
        the first message received as MimeMessage or null if there was no message received
        Throws:
        InterruptedException
      • removeAllReceivedMessages

        public void removeAllReceivedMessages()
                                       throws com.icegreen.greenmail.store.FolderException
        Removes all received mails.
        Throws:
        com.icegreen.greenmail.store.FolderException
      • waitForIncomingMessage

        public boolean waitForIncomingMessage​(int numberOfMessages)
        Wait until the specified number of mails is received or until a timeout is reached.
        Returns:
        Returns false if timeout period was reached, otherwise true.
      • waitForIncomingMessage

        public boolean waitForIncomingMessage​(Long timeout,
                                              int numberOfMessages)
        Wait until the specified number of mails is received or until specified timeout is reached.
        Returns:
        Returns false if timeout period was reached, otherwise true.