/**
* Most of the code in the Qalingo project is copyrighted Hoteia and licensed
* under the Apache License Version 2.0 (release version 0.8.0)
* http://www.apache.org/licenses/LICENSE-2.0
*
* Copyright (c) Hoteia, 2012-2014
* http://www.hoteia.com - http://twitter.com/hoteia - contact@hoteia.com
*
*/
package org.hoteia.qalingo.core.util.impl;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.apache.commons.lang.StringUtils;
import org.springframework.mail.javamail.MimeMessagePreparator;
public class MimeMessagePreparatorImpl implements MimeMessagePreparator, Serializable {
/**
*
*/
private static final long serialVersionUID = 745699901105995036L;
private String from;
private String fromName;
private String to;
private String cc;
private String bcc;
private String replyTo;
private String subject;
private String plainTextContent;
private String htmlContent;
private String unsubscribeUrlOrEmail;
private boolean mirroringActivated;
private String mirroringFilePath;
public String getFrom() {
return this.from;
}
public void setFrom(String from) {
this.from = from;
}
public String getFromName() {
return fromName;
}
public void setFromName(String fromName) {
this.fromName = fromName;
}
public String getTo() {
return this.to;
}
public void setTo(String to) {
this.to = to;
}
public String getCc() {
return this.cc;
}
public void setCc(String cc) {
this.cc = cc;
}
public String getBcc() {
return bcc;
}
public void setBcc(String bcc) {
this.bcc = bcc;
}
public String getReplyTo() {
return this.replyTo;
}
public void setReplyTo(String replyTo) {
this.replyTo = replyTo;
}
public String getSubject() {
return this.subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getPlainTextContent() {
return this.plainTextContent;
}
public void setPlainTextContent(String plainTextContent) {
this.plainTextContent = plainTextContent;
}
public String getHtmlContent() {
return this.htmlContent;
}
public void setHtmlContent(String htmlContent) {
this.htmlContent = htmlContent;
}
public String getUnsubscribeUrlOrEmail() {
return unsubscribeUrlOrEmail;
}
public void setUnsubscribeUrlOrEmail(String unsubscribeUrlOrEmail) {
this.unsubscribeUrlOrEmail = unsubscribeUrlOrEmail;
}
public boolean isMirroringActivated() {
return mirroringActivated;
}
public void setMirroringActivated(boolean mirroringActivated) {
this.mirroringActivated = mirroringActivated;
}
public String getMirroringFilePath() {
return mirroringFilePath;
}
public void setMirroringFilePath(String mirroringFolderPath) {
this.mirroringFilePath = mirroringFolderPath;
}
public void prepare(MimeMessage message) throws Exception {
message.addHeader("List-Unsubscribe", "<" + getUnsubscribeUrlOrEmail() + ">");
// AUTO unsubscribe for Gmail/Hotmail etc : RFC2369
if (StringUtils.isNotEmpty(getUnsubscribeUrlOrEmail())) {
message.addHeader("List-Unsubscribe", "<" + getUnsubscribeUrlOrEmail() + ">");
}
if (getFrom() != null) {
List<InternetAddress> toAddress = new ArrayList<InternetAddress>();
toAddress.add(new InternetAddress(getFrom(), getFromName()));
message.addFrom(toAddress.toArray(new InternetAddress[toAddress.size()]));
}
if (getTo() != null) {
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(getTo()));
}
if (getCc() != null) {
message.addRecipients(Message.RecipientType.CC, InternetAddress.parse(getCc()));
}
if (getBcc() != null) {
message.addRecipients(Message.RecipientType.BCC, InternetAddress.parse(getBcc()));
}
if (getSubject() != null) {
message.setSubject(getSubject());
}
MimeMultipart mimeMultipart = new MimeMultipart("alternative");// multipart/mixed or mixed or related or alternative
message.setContent(mimeMultipart);
if (getPlainTextContent() != null) {
BodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setHeader("Content-Type", "text/plain; charset=\"UTF-8\"");
textBodyPart.setHeader("Content-Transfer-Encoding", "base64");
textBodyPart.setContent(getPlainTextContent(), "text/plain; charset=\"UTF-8\"");
mimeMultipart.addBodyPart(textBodyPart);
}
if (getHtmlContent() != null) {
BodyPart htmlBodyPart = new MimeBodyPart();
htmlBodyPart.setHeader("Content-Type", "text/html; charset=\"UTF-8\"");
htmlBodyPart.setHeader("Content-Transfer-Encoding", "base64");
htmlBodyPart.setContent(getHtmlContent(), "text/html; charset=\"UTF-8\"");
mimeMultipart.addBodyPart(htmlBodyPart);
}
}
}