Как прикрепить файл к письму в формате HTML с помощью Apache Commons - PullRequest
7 голосов
/ 23 октября 2009

Я использую Apache Commons Email 1.1 и не могу понять, как прикрепить файл к HtmlEmail. Если я запускаю приведенный ниже код, я получаю электронное письмо с вложением, но HTML-сообщение также выглядит как вложение.

Если я не вызову email.attach (), HTML-сообщение будет проходить так, как вы ожидаете, но мне нужны и HTML-сообщение, и приложение. Чего мне не хватает?

  HtmlEmail email = new HtmlEmail();
  email.setHostName("localhost");
  email.addTo("test@mail.com", "Test");
  email.setFrom("testapp@mail.com", "Test App");
  email.setSubject("Test message");
  email.setHtmlMsg("<div style='font-size: 20px; color: green;'>This is html email</div>");

  EmailAttachment attachment = new EmailAttachment();
  attachment.setPath(pdfPath);
  attachment.setDisposition(EmailAttachment.ATTACHMENT);
  email.attach(attachment);

  email.send();

Ответы [ 5 ]

12 голосов
/ 21 января 2010
email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);

это работает с commons-email 1.1.

pdfBytes должно быть byte[], содержащее байты документа PDF. Если это вас не устраивает, вы можете попробовать другие реализации DataSource, но я не могу гарантировать, что они будут работать (хотя они должны).

(выше указано org.apache.commons.mail.ByteArrayDataSource)

4 голосов
/ 08 февраля 2011

Обратите внимание, что с помощью:

email.attach(new ByteArrayDataSource(pdfBytes, "application/pdf"),
      "document.pdf", "Document description",
       EmailAttachment.ATTACHMENT);

на HtmlEmail с использованием commons-email 1.1 приводит к тому, что в полученном электронном письме его сообщение (текст или html) заключено в качестве вложения.

Переключение на MultiPartEmail исправило это.

3 голосов
/ 23 октября 2009

Я предлагаю вам попробовать текущую версию кандидата v1.2 RC2, поскольку 1.1 (я полагаю, вы используете это) имеет некоторые проблемы с версткой HTML

обыкновенная электронная почта 1.2 RC2

0 голосов
/ 30 июня 2018

В последней версии (1.5) следующий код работал для меня

 email.attach(new FileDataSource(attachmentFileObject), "AttachmentName", "Description");
0 голосов
/ 24 октября 2013

Я использую метод HtmlEmail # embed (URL, String):

File pdf = new File(pdfPath);
email.embed(pdf.toURI().toURL(), pdf.getName)
...