package com.anjlab.ping.services; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Mailer { public static final String PING_SERVICE_NOTIFY_GMAIL_COM = "ping.service.notify@gmail.com"; public static final String DMITRY_GUSEV_GMAIL_COM = "dmitry.gusev@gmail.com"; private static final Logger logger = LoggerFactory.getLogger(Mailer.class); public void sendSystemMessageToDeveloper(String subject, String message, MimeBodyPart... attachments) { sendMail(PING_SERVICE_NOTIFY_GMAIL_COM, DMITRY_GUSEV_GMAIL_COM, subject, message, attachments); } public void sendMail(String from, String to, String subject, String message, MimeBodyPart... attachments) { sendMail2("text/plain", from, to, subject, message, attachments); } public void sendMail2(String mimeType, String from, String to, String subject, String text, MimeBodyPart... attachments) { if (Utils.isNullOrEmpty(to)) { logger.warn("mail can't be delivered to (recipient == null):\n{}", text); return; } Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Message message = new MimeMessage(session); try { Multipart mp = new MimeMultipart("mixed"); BodyPart content = new MimeBodyPart(); content.setContent(text, mimeType); mp.addBodyPart(content); if (attachments != null && attachments.length > 0) { for (MimeBodyPart attachment : attachments) { mp.addBodyPart(attachment); } } message.setFrom(new InternetAddress(from, from.equals(PING_SERVICE_NOTIFY_GMAIL_COM) ? "Ping Service Notifier" : null)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setSubject(subject); message.setContent(mp); message.saveChanges(); Transport.send(message); } catch (Exception e) { logger.error( "Error sending mail:"+ "\n\tFrom: " + from + "\n\tTo: " + to + "\n\tSubject: " + subject + "\n\tMessage:\n\n" + (Utils.isNullOrEmpty(text) ? "-" : text.substring(0, 100) + "..."), e); } } }