robe-mail/src/main/java/io/robe/mail/MailManager.java
public static boolean sendMail(MailItem item) {
        LOGGER.debug("Mail : " + item.toString());
        boolean result = queue.add(item);
        LOGGER.info("Adding mail to queue. Queue size: " + queue.size());

        // If thread is alive leave the job to it
        // Else create new thread and start.
        if (!consumerThread.isAlive()) {
            consumerThread = new Thread(consumer);
            consumerThread.start();
        }
        return result;
    }
public static boolean sendMail(MailItem item) {
        LOGGER.debug("Mail : " + item.toString());
        boolean result = queue.add(item);
        LOGGER.info("Adding mail to queue. Queue size: " + queue.size());

        // If thread is alive leave the job to it
        // Else create new thread and start.
        if (!consumerThread.isAlive()) {
            consumerThread = new Thread(consumer);
            consumerThread.start();
        }
        return result;
    }
Takes the mail item into the queue and manages the mail sender thread.
If thread is alive it will send the mail at the end of current thread queue.
Else a new thread will be created and started.

@param item MailItem to send.
@return true if item added to the queue successfully.