added email attachment support
This commit is contained in:
@ -20,7 +20,12 @@ import javax.mail.internet.MimeMultipart;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import de.muehlencord.shared.account.configuration.AccountConfigurationValue;
|
import de.muehlencord.shared.account.configuration.AccountConfigurationValue;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -77,16 +82,17 @@ public class MailService implements Serializable {
|
|||||||
public String sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String templateName) throws MailException {
|
public String sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String templateName) throws MailException {
|
||||||
return sendHTMLMail(recipient, subject, dataModel, templateName, null);
|
return sendHTMLMail(recipient, subject, dataModel, templateName, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName) throws MailException {
|
public String sendHTMLMail(String recipient, String subject, MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName) throws MailException {
|
||||||
return sendHTMLMail(recipient, null, null, subject, dataModel, htmlTemplateName, plainTemplateName, "UTF-8");
|
return sendHTMLMail(recipient, null, null, subject, dataModel, htmlTemplateName, plainTemplateName, "UTF-8", new ArrayList<>());
|
||||||
}
|
|
||||||
|
|
||||||
public String sendHTMLMail(String recipient, String ccRecipient, String bccRecipient, String subject, MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName) throws MailException {
|
|
||||||
return sendHTMLMail(recipient, ccRecipient, bccRecipient, subject, dataModel, htmlTemplateName, plainTemplateName, "UTF-8");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String sendHTMLMail(String recipient, String ccRecipient, String bccRecipient, String subject, MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName, String encoding) throws MailException {
|
public String sendHTMLMail(String recipient, String ccRecipient, String bccRecipient, String subject, MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName) throws MailException {
|
||||||
|
return sendHTMLMail(recipient, ccRecipient, bccRecipient, subject, dataModel, htmlTemplateName, plainTemplateName, "UTF-8", new ArrayList<>());
|
||||||
|
}
|
||||||
|
|
||||||
|
public String sendHTMLMail(String recipient, String ccRecipient, String bccRecipient, String subject,
|
||||||
|
MailDatamodel dataModel, String htmlTemplateName, String plainTemplateName, String encoding, List<File> attachments) throws MailException {
|
||||||
try {
|
try {
|
||||||
MimeMessage message = new MimeMessage(mailSession);
|
MimeMessage message = new MimeMessage(mailSession);
|
||||||
message.setFrom(); // use default from
|
message.setFrom(); // use default from
|
||||||
@ -97,23 +103,48 @@ public class MailService implements Serializable {
|
|||||||
if (bccRecipient != null) {
|
if (bccRecipient != null) {
|
||||||
message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bccRecipient, false));
|
message.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(bccRecipient, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
message.setSubject(subject, encoding);
|
message.setSubject(subject, encoding);
|
||||||
|
|
||||||
|
Multipart contentMultiPart = new MimeMultipart("alternative");
|
||||||
|
|
||||||
String htmlBody = mailTemplateService.getStringFromTemplate(htmlTemplateName, dataModel);
|
String htmlBody = mailTemplateService.getStringFromTemplate(htmlTemplateName, dataModel);
|
||||||
MimeBodyPart htmlBodyPart = new MimeBodyPart();
|
MimeBodyPart htmlBodyPart = new MimeBodyPart();
|
||||||
htmlBodyPart.setContent(htmlBody, "text/html; charset=UTF-8");
|
htmlBodyPart.setContent(htmlBody, "text/html; charset=UTF-8");
|
||||||
|
contentMultiPart.addBodyPart(htmlBodyPart);
|
||||||
Multipart multipart = new MimeMultipart("alternative");
|
|
||||||
if (plainTemplateName != null) {
|
if (plainTemplateName != null) {
|
||||||
String plainBody = mailTemplateService.getStringFromTemplate(plainTemplateName, dataModel);
|
String plainBody = mailTemplateService.getStringFromTemplate(plainTemplateName, dataModel);
|
||||||
MimeBodyPart plainBodyPart = new MimeBodyPart();
|
MimeBodyPart plainBodyPart = new MimeBodyPart();
|
||||||
plainBodyPart.setText(plainBody, "UTF-8");
|
plainBodyPart.setText(plainBody, "UTF-8");
|
||||||
multipart.addBodyPart(plainBodyPart);
|
contentMultiPart.addBodyPart(plainBodyPart);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ((attachments == null) || (attachments.isEmpty())) {
|
||||||
|
message.setContent(contentMultiPart);
|
||||||
|
} else {
|
||||||
|
MimeBodyPart contentBodyPart = new MimeBodyPart();
|
||||||
|
contentBodyPart.setContent(contentMultiPart);
|
||||||
|
|
||||||
|
MimeMultipart messageMultipart = new MimeMultipart("related");
|
||||||
|
messageMultipart.addBodyPart(contentBodyPart);
|
||||||
|
for (File attachment : attachments) {
|
||||||
|
try {
|
||||||
|
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
|
||||||
|
attachmentBodyPart.attachFile(attachment);
|
||||||
|
String contentType = Files.probeContentType(attachment.toPath());
|
||||||
|
if (contentType != null) {
|
||||||
|
attachmentBodyPart.setHeader("Content-Type", contentType);
|
||||||
|
}
|
||||||
|
messageMultipart.addBodyPart(attachmentBodyPart);
|
||||||
|
} catch (IOException ex) {
|
||||||
|
throw new MailException("Cannot attach " + attachment.toString() + " to email. Reason: " + ex.toString(), ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
message.setContent (messageMultipart);
|
||||||
}
|
}
|
||||||
multipart.addBodyPart(htmlBodyPart);
|
|
||||||
message.setContent(multipart);
|
|
||||||
|
|
||||||
return transportMail(message);
|
return transportMail(message);
|
||||||
} catch (MessagingException | MailTemplateException ex) {
|
} catch (MessagingException | MailTemplateException ex) {
|
||||||
@ -144,7 +175,6 @@ public class MailService implements Serializable {
|
|||||||
String baseUrl = configService.getConfigValue(configKey);
|
String baseUrl = configService.getConfigValue(configKey);
|
||||||
String resetUrlWithToken = baseUrl + "/login.xhtml?token=" + token;
|
String resetUrlWithToken = baseUrl + "/login.xhtml?token=" + token;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
String resetUrlWithToken = passwordResetUrl + "?token=" + token;
|
String resetUrlWithToken = passwordResetUrl + "?token=" + token;
|
||||||
model.addParameter("url", baseUrl);
|
model.addParameter("url", baseUrl);
|
||||||
model.addParameter("resetUrl", resetUrlWithToken);
|
model.addParameter("resetUrl", resetUrlWithToken);
|
||||||
|
|||||||
Reference in New Issue
Block a user