Теперь, прежде чем этот вопрос будет помечен как дубликат, Добавить изображение в шаблон freemarker для почты?
Этот вопрос не дает решения моей проблемы.Поэтому я хочу добавить изображение в качестве фона в HTML-шаблон Freemarker, который я присоединяю к программе Google Gmail API на Java.
Вот код для Freemarker: -
<style>
body{
background-image: url("cid:${image.jpg}");
}
.container {
position: absolute;
padding:25px;
margin:25px;
border:5px;
text-align: justify;
text-justify: inter-word;
font-family: "Times New Roman";
font-style: italic;
}
</style>
И способ вставки изображения с помощью Google Gmail API: -
Multipart multipart = new MimeMultipart();
MimeBodyPart bodyPart = new MimeBodyPart();
Template t = freemarkerTemlate.getTemplate("OneEmployee.ftl");
String mailContent = FreeMarkerTemplateUtils.processTemplateIntoString(t, model);
bodyPart.setContent(mailContent, "text/html");
multipart.addBodyPart(bodyPart);
DataSource fds = new FileDataSource(Mailer.class.getClassLoader().getResource("images/image1.jpg").getFile());
bodyPart = new MimeBodyPart();
bodyPart.setDataHandler(new DataHandler(fds));
bodyPart.setHeader("Content-ID", "<image.jpg>");
multipart.addBodyPart(bodyPart);
MyИзображения находятся в каталоге ресурсов, который содержит другой каталог изображений
Теперь я попробовал почти все возможные варианты кода, такие как
<img src="">
Добавление cid: в пределах $ {}и также без использования "", но это, кажется, не устанавливает изображение в любом случае.
В некоторых случаях он запускается без присоединения образа, а в некоторых случаях запускается, но также выдает ошибку на консоли: -
Application failed at {image1.jpg}:- Missing or Null Argument
Модель, которую я использую:-
Map model = new HashMap();
model.put("emailNames", emailNames);
Я не добавил ничего в модель, так как это единственное, кроме изображения, которое я вставляю в шаблон свободного маркера
Есть ли что-то, что я делаю?неправильно или отсутствует?
РЕДАКТИРОВАТЬ 2
Я также попытался вставить изображение с помощью модели, установив его в качестве кода ключа, прикрепленного для справки
Map model = new HashMap();
model.put("emailNames", emailNames);
model.put("image.jpg", Mailer.class.getClassLoader().getResource("images/image1.jpg").getFile())
Это все еще не работает!
РЕДАКТИРОВАТЬ 2
Интересно, что я заметил, что когда я не определяю cid
, то добавляетфоновое изображение как вложение, но всякий раз, когда я добавляю синтаксис cid
, оно не добавляется как вложение, а просто игнорирует почту.
Я прочитал в сети, что согласно учебным пособиям вы не передаете Изображение, которое будет вставлено как часть модели, а скорее добавляете его как Приложение, определяющее content_id (cid) Изображения.
Спасибо