package cn.dreampie.mail; import cn.dreampie.common.util.Joiner; import cn.dreampie.log.Logger; import org.apache.commons.mail.*; /** * Mailer.sendHtml("测试","173956022@qq.com","<a href='www.dreampie.cn'>Dreampie</a>"); * Created by wangrenhui on 14-5-6. */ public class MailSender { private static Logger logger = Logger.getLogger(MailSender.class); /** * @param subject 主题 * @param body 内容 * @param recipients 收件人 */ public static void sendText(String subject, String body, String... recipients) { try { SimpleEmail simpleEmail = getSimpleEmail(subject, body, recipients); simpleEmail.send(); logger.info("send email to {}", Joiner.on(",").useForNull("null").join(recipients)); } catch (EmailException e) { throw new MailException("Unabled to send email", e); } } /** * @param subject 主题 * @param body 内容 * @param recipients 收件人 */ public static SimpleEmail getSimpleEmail(String subject, String body, String... recipients) throws EmailException { SimpleEmail simpleEmail = new SimpleEmail(); configEmail(subject, simpleEmail, recipients); if (body != null) simpleEmail.setMsg(body); return simpleEmail; } /** * @param subject 主题 * @param body 内容 * @param recipients 收件人 */ public static void sendHtml(String subject, String body, String... recipients) { sendHtml(subject, body, null, recipients); } /** * @param subject 主题 * @param body 内容 * @param attachment 附件 * @param recipients 收件人 */ public static void sendHtml(String subject, String body, EmailAttachment attachment, String... recipients) { try { HtmlEmail htmlEmail = getHtmlEmail(subject, body, attachment, recipients); htmlEmail.send(); logger.info("send email to {}", Joiner.on(",").useForNull("null").join(recipients)); } catch (EmailException e) { throw new MailException("Unabled to send email", e); } } /** * @param subject 主题 * @param recipients 收件人 */ public static HtmlEmail getHtmlEmail(String subject, String... recipients) { return getHtmlEmail(subject, null, null, recipients); } /** * @param subject 主题 * @param body 内容 * @param attachment 附件 * @param recipients 收件人 */ public static HtmlEmail getHtmlEmail(String subject, String body, EmailAttachment attachment, String... recipients) { try { HtmlEmail htmlEmail = new HtmlEmail(); configEmail(subject, htmlEmail, recipients); if (body != null) htmlEmail.setHtmlMsg(body); // set the alter native message htmlEmail.setTextMsg("Your email client does not support HTML messages"); if (attachment != null) htmlEmail.attach(attachment); return htmlEmail; } catch (EmailException e) { throw new MailException("Unabled to send email", e); } } /** * @param subject 主题 * @param body 内容 * @param attachment 附件 * @param recipients 收件人 */ public static void sendAttachment(String subject, String body, EmailAttachment attachment, String... recipients) { try { MultiPartEmail multiPartEmail = getMultiPartEmail(subject, body, attachment, recipients); multiPartEmail.send(); logger.info("send email to {}", Joiner.on(",").useForNull("null").join(recipients)); } catch (EmailException e) { throw new MailException("Unabled to send email", e); } } /** * @param subject 主题 * @param recipients 收件人 */ public static MultiPartEmail getMultiPartEmail(String subject, String body, String... recipients) { return getMultiPartEmail(subject, body, null, recipients); } /** * @param subject 主题 * @param body 内容 * @param attachment 附件 * @param recipients 收件人 */ public static MultiPartEmail getMultiPartEmail(String subject, String body, EmailAttachment attachment, String... recipients) { try { MultiPartEmail multiPartEmail = new MultiPartEmail(); configEmail(subject, multiPartEmail, recipients); multiPartEmail.setMsg(body); // add the attachment if (attachment != null) multiPartEmail.attach(attachment); return multiPartEmail; } catch (EmailException e) { throw new MailException("Unabled to send email", e); } } private static void configEmail(String subject, Email email, String... recipients) throws EmailException { if (recipients == null) throw new EmailException("Recipients not found."); Mail mail = MailPlugin.getMail(); email.setCharset(mail.getCharset()); email.setSocketTimeout(mail.getTimeout()); email.setSocketConnectionTimeout(mail.getConnectout()); email.setHostName(mail.getHost()); if (!mail.getSslport().isEmpty()) email.setSslSmtpPort(mail.getSslport()); if (!mail.getPort().isEmpty()) email.setSmtpPort(Integer.parseInt(mail.getPort())); email.setSSLOnConnect(mail.isSsl()); email.setStartTLSEnabled(mail.isTls()); email.setDebug(mail.isDebug()); email.setAuthentication(mail.getUser(), mail.getPassword()); email.setFrom(mail.getFrom(), mail.getName()); email.setSubject(subject); email.addTo(recipients); } }