Class MailSender

java.lang.Object
com.iizix.mail.MailSender

public class MailSender extends Object
The mail sender can send emails directly or queued, with a reply callback. It must be configured in either the Designer or the Server.

All mails that are queued are stored in a mail queue folder. This means that if you stop the e.g. server and restart it, no mail will be unsent. The worst that might happen is that a mail is sent twice (but this is a very thin chance to happen).

Author:
Christopher Mindus
  • Constructor Details

    • MailSender

      public MailSender(MailProps pc, ExecutorService executorService, File mailQueueDirectory) throws IOException, NoSuchProviderException, AddressException
      Creates a new instance of the mail sender with the specified settings. Any previous mail sender with remaining messages to send will still do its work.
      Parameters:
      pc - The mail property container.
      executorService - Executor service for mail sending, null when not queueing mails, just for test sending.
      mailQueueDirectory - Mail queue directory. If it doesn't exist, it is created.
      Throws:
      IOException - If the mail queue directory does not exist.
      NoSuchProviderException - If the "smtp" or "smtps" providers do not exist!
      AddressException - If the default sender failed to parse.
  • Method Details

    • getInstance

      public static MailSender getInstance()
      Gets the default instance of the mail sender.
      Returns:
      The default instance, null if none is configured.
    • getInstance

      public static MailSender getInstance(String name)
      Gets the default instance of the mail sender.
      Parameters:
      name - The name of the mail sender, null for default.
      Returns:
      The default instance, null if none is configured.
    • getInstances

      public static MailSender[] getInstances()
      Returns all configured mail senders.
      Returns:
      The array may be empty if no mail senders are configured.
    • stopAll

      public static int stopAll(long timeout) throws InterruptedException
      Requests to stop all mail senders.
      Parameters:
      timeout - Timeout in milliseconds to wait.
      Returns:
      Number of mails left to send (in all mail queues), zero means none.
      Throws:
      InterruptedException - If the wait is interrupted.
    • getDescription

      public String getDescription()
      Gets the description of this mail sender.
      Returns:
      A description string, or null if none is defined.
    • getDefaultSender

      public InternetAddress getDefaultSender()
      The default 'Sender' for mails.
      Returns:
      The default 'Sender' for mails, null for none.
    • getDefaultReplyTo

      public InternetAddress getDefaultReplyTo()
      The default 'Reply To' for mails.
      Returns:
      The default 'Reply To' for mails, null for none.
    • getDefaultCCs

      public InternetAddress[] getDefaultCCs()
      The default CC's for mails.
      Returns:
      The default CC's for mails, null for none.
    • getDefaultBCCs

      public InternetAddress[] getDefaultBCCs()
      The default BCC's for mails.
      Returns:
      The default BCC's for mails, null for none.
    • isDisposed

      public boolean isDisposed()
      Checks if the mail sender is disposed of.
      Returns:
      true if disposed of, false otherwise.
    • createMail

      public Mail createMail()
      Creates a new mail to send.
      Returns:
      An uninitialized mail with a MimeMessage as the mail's message. It can be retrieved using Mail.getMessage() and then cast to MimeMessage.
    • createMailWithDefaults

      public Mail createMailWithDefaults() throws MessagingException
      Creates a new mail to send with all defaults that are defined set:
      Returns:
      An new mail initialized only with default Sender, Reply To, CC's and BCC's where defined, with a MimeMessage as the mail's message. It can be retrieved using Mail.getMessage() and then cast to MimeMessage.
      Throws:
      MessagingException - For messaging failures.
    • getQueuedMailCount

      public int getQueuedMailCount()
      Returns how mail mails are currently queued for sending.
      Returns:
      The number of queued mails.
    • dispose

      public void dispose()
      Disposes of the current mail sender and leaves unsent mail queued.
    • deleteMailDirectory

      public void deleteMailDirectory() throws IOException
      Deletes all unsent mails and the mail folder. This call should be made in preference once the mail sender has been disposed of.
      Throws:
      IOException - If the mail folder failed to be deleted.