import com.google.common.annotations.VisibleForTesting;
import com.sun.mail.smtp.SMTPTransport;
+import org.apache.log4j.Logger;
/**
* {@link Action} implementation that sends an email containing the triggering
*/
public class EmailAction implements Action {
+ private static final Logger logger = Logger.getLogger(EmailAction.class);
+
/** The email address of the sender. */
private final String sender;
/* create text and html parts. */
MimeMultipart multipart = new MimeMultipart();
multipart.setSubType("alternative");
- MimeBodyPart textPart = new MimeBodyPart();
- textPart.setContent(output.text("text/plain", -1), "text/plain;charset=utf-8");
- MimeBodyPart htmlPart = new MimeBodyPart();
- htmlPart.setContent(output.text("text/html", -1), "text/html;charset=utf-8");
- multipart.addBodyPart(textPart);
- multipart.addBodyPart(htmlPart);
+ addPlainTextPart(output, multipart);
+ addHtmlPart(output, multipart);
message.setContent(multipart);
- transport.connect();
+ if (!transport.isConnected()) {
+ transport.connect();
+ }
transport.sendMessage(message, message.getAllRecipients());
} catch (MessagingException me1) {
- /* swallow. */
+ logger.error("Could not send email!", me1);
+ }
+ }
+
+ private void addPlainTextPart(Output output, MimeMultipart multipart) throws MessagingException {
+ if (output.text("text/plain") == null) {
+ return;
+ }
+ MimeBodyPart textPart = new MimeBodyPart();
+ textPart.setContent(output.text("text/plain"), "text/plain;charset=utf-8");
+ multipart.addBodyPart(textPart);
+ }
+
+ private void addHtmlPart(Output output, MimeMultipart multipart) throws MessagingException {
+ if (output.text("text/html") == null) {
+ return;
}
+ MimeBodyPart htmlPart = new MimeBodyPart();
+ htmlPart.setContent(output.text("text/html"), "text/html;charset=utf-8");
+ multipart.addBodyPart(htmlPart);
}
}