diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index 5f15ce49b91734a6eee4e8ea7880f3027b3b7035..a4c8b902e88dfcd297c6b2d506f8156864dc95b7 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -1454,11 +1454,18 @@ public class MailManagerImpl implements MailManager, InitializingBean { if (attachments != null && !attachments.isEmpty()) { // with attachment use multipart message - Multipart multipart = new MimeMultipart(); + Multipart multipart = new MimeMultipart("mixed"); // 1) add body part - BodyPart messageBodyPart = new MimeBodyPart(); - messageBodyPart.setText(body); - multipart.addBodyPart(messageBodyPart); + if(StringHelper.isHtml(body)) { + Multipart alternativePart = createMultipartAlternative(body); + MimeBodyPart wrap = new MimeBodyPart(); + wrap.setContent(alternativePart); + multipart.addBodyPart(wrap); + } else { + BodyPart messageBodyPart = new MimeBodyPart(); + messageBodyPart.setText(body); + multipart.addBodyPart(messageBodyPart); + } // 2) add attachments for (DBMailAttachment attachment : attachments) { // abort if attachment does not exist @@ -1468,7 +1475,7 @@ public class MailManagerImpl implements MailManager, InitializingBean { + (attachment == null ? null : attachment.getName()), null); return msg; } - messageBodyPart = new MimeBodyPart(); + BodyPart messageBodyPart = new MimeBodyPart(); VFSLeaf data = getAttachmentDatas(attachment); DataSource source = new VFSDataSource(attachment.getName(), attachment.getMimetype(), data); @@ -1480,7 +1487,11 @@ public class MailManagerImpl implements MailManager, InitializingBean { msg.setContent(multipart); } else { // without attachment everything is easy, just set as text - msg.setText(body, "utf-8"); + if(StringHelper.isHtml(body)) { + msg.setContent(createMultipartAlternative(body)); + } else { + msg.setText(body, "utf-8"); + } } msg.setSentDate(new Date()); msg.saveChanges();