public void sendMail (boolean shouldBlock) {
public void sendMail () {
    public void sendMail (boolean shouldBlock) {        try {            this.finishMessagePreparation ();            ERMailSender sender = ERMailSender.sharedMailSender ();            ERMessage message    = this.buildMessage ();            if (shouldBlock)                sender.sendMessageNow (message);            else {                // add the current message to the message stack                boolean mailAccepted = false;                while (!mailAccepted) {                    try {                        sender.sendMessageDeffered (message);                        mailAccepted = true;                                           } catch (ERMailSender.SizeOverflowException e) {                        // The mail sender is overflowed, we need to wait                        try {                            // Ask the current thread to stop                            // computing for a little while.                            // Here, we make the assumption that                            // the current thread is the one that                            // feeds the ERMailSender.                            Thread.currentThread ().sleep                                (ERJavaMail.sharedInstance ().milliSecondsWaitIfSenderOverflowed ());                        } catch (InterruptedException ie) {                            log.warn ("Caught InterruptedException.", ie);                        }                    }                }            }        } catch (MessagingException e) {            log.warn ("MessagingException exception caught, re-throwing exception.", e);            throw new NSForwardException (e);        } finally {            this.setMimeMessage (null);        }    }