public static void setNonHtmlMessage(CommandSender sender, String[] args) {
   if (inProgress(sender.getName())) {
     switch (getCurrentEmail(sender.getName())) {
       case "simple":
         LogHelper.showWarning("emailNonHtmlNotAllowed", sender);
         return;
       case "multi":
         LogHelper.showWarning("emailNonHtmlNotAllowed", sender);
         return;
       case "html":
         break;
       default:
         LogHelper.showWarning("emailNotInProgressEdit", sender);
         return;
     }
     HtmlEmail email = htmlEmail.get(sender.getName());
     try {
       email.setMsg(Utils.implode(args, " "));
     } catch (EmailException e) {
       sendErrorMessage(sender, e);
       return;
     }
     LogHelper.showWarning("emailNonHtmlMessageSet", sender);
     htmlEmail.put(sender.getName(), email);
   } else {
     LogHelper.showWarning("emailNotInProgressEdit", sender);
   }
 }
 @SuppressWarnings("unchecked")
 static String[] composeReadableRecipientList(HtmlEmail email) {
   String[] RRL = {"To: ", "Cc: ", "Bcc: "};
   Iterator<String> toIT = email.getToAddresses().iterator(),
       ccIT = email.getCcAddresses().iterator(),
       bccIT = email.getBccAddresses().iterator();
   while (toIT.hasNext()) {
     RRL[0] += toIT.next() + ", ";
   }
   while (ccIT.hasNext()) {
     RRL[1] += ccIT.next() + ", ";
   }
   while (bccIT.hasNext()) {
     RRL[2] += bccIT.next() + ", ";
   }
   return RRL;
 }
 static void editRecipientHtml(CommandSender sender, String emailString, RecipientAction action) {
   HtmlEmail email = htmlEmail.get(sender.getName());
   switch (action) {
     case ADD:
       try {
         email.addTo(emailString);
       } catch (EmailException e) {
         sendErrorMessage(sender, e);
         return;
       }
       LogHelper.showInfo("emailRecipientAdd", sender);
       return;
     case ADD_BCC:
       try {
         email.addBcc(emailString);
       } catch (EmailException e) {
         sendErrorMessage(sender, e);
         return;
       }
       LogHelper.showInfo("emailRecipientAdd", sender);
       return;
     case ADD_CC:
       try {
         email.addCc(emailString);
       } catch (EmailException e) {
         sendErrorMessage(sender, e);
         return;
       }
       LogHelper.showInfo("emailRecipientAdd", sender);
       return;
     case DELETE:
       try {
         email = removeRecipient(email, emailString);
       } catch (EmailException e) {
         sendErrorMessage(sender, e);
         return;
       }
       LogHelper.showInfo("emailRecipientDeleted", sender);
       return;
     case LIST:
       sender.sendMessage(composeReadableRecipientList(email));
     default:
   }
   htmlEmail.put(sender.getName(), email);
 }
 static HtmlEmail setAuthentication(HtmlEmail email) {
   if (!(CommandsEX.getConf().getString("Email.Username").isEmpty()
       && CommandsEX.getConf().getString("Email.Password").isEmpty())) {
     email.setAuthentication(
         CommandsEX.getConf().getString("Email.Username"),
         CommandsEX.getConf().getString("Email.Password"));
   }
   return email;
 }
 public static void compose(CommandSender sender, String type) {
   if (inProgress(sender.getName())) {
     LogHelper.showWarning("emailAlreadyInProgress", sender);
     return;
   }
   if (type.equalsIgnoreCase("simple")) {
     SimpleEmail email = new SimpleEmail();
     email.setHostName(CommandsEX.getConf().getString("Email.Host"));
     try {
       email.setFrom(CommandsEX.getConf().getString("Email.From"));
     } catch (EmailException e) {
       sendErrorMessage(sender, e);
       return;
     }
     email = setAuthentication(email);
     simpleEmail.put(sender.getName(), email);
   } else if (type.equalsIgnoreCase("attachment")) {
     MultiPartEmail email = new MultiPartEmail();
     email.setHostName(CommandsEX.getConf().getString("Email.Host"));
     try {
       email.setFrom(CommandsEX.getConf().getString("Email.From"));
     } catch (EmailException e) {
       sendErrorMessage(sender, e);
       return;
     }
     email = setAuthentication(email);
     multiEmail.put(sender.getName(), email);
   } else if (type.equalsIgnoreCase("html")) {
     HtmlEmail email = new HtmlEmail();
     email.setHostName(CommandsEX.getConf().getString("Email.Host"));
     try {
       email.setFrom(CommandsEX.getConf().getString("Email.From"));
     } catch (EmailException e) {
       sendErrorMessage(sender, e);
       return;
     }
     email = setAuthentication(email);
     htmlEmail.put(sender.getName(), email);
   }
   LogHelper.showInfo("emailCreated", sender);
 }
 static HtmlEmail removeRecipient(HtmlEmail email, String emailToRemove) throws EmailException {
   List<String> to = Utils.noGenericTypeToStringType(email.getToAddresses()),
       cc = Utils.noGenericTypeToStringType(email.getCcAddresses()),
       bcc = Utils.noGenericTypeToStringType(email.getBccAddresses());
   if (to.contains(emailToRemove)) {
     to.remove(emailToRemove);
     email.setTo(to);
   } else if (cc.contains(emailToRemove)) {
     cc.remove(emailToRemove);
     email.setCc(cc);
   } else if (bcc.contains(emailToRemove)) {
     bcc.remove(emailToRemove);
     email.setBcc(bcc);
   }
   return email;
 }
 static void setBouncebackHtml(CommandSender sender, String bounceback) {
   HtmlEmail email = htmlEmail.get(sender.getName());
   email.setBounceAddress(bounceback);
   LogHelper.showInfo("emailBouncebackSet", sender);
   htmlEmail.put(sender.getName(), email);
 }
 static void editSubjectHTML(CommandSender sender, String[] args) {
   HtmlEmail email = htmlEmail.get(sender.getName());
   email.setSubject(Utils.implode(args, " "));
   LogHelper.showInfo("emailSubjectSet", sender);
   htmlEmail.put(sender.getName(), email);
 }