Apache Commons 이메일을 사용하여 HTML 이메일에 파일을 첨부하는 방법

StackOverflow https://stackoverflow.com/questions/1610301

문제

사용 중입니다 Apache Commons 이메일 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();
도움이 되었습니까?

해결책

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

이것은 Commons-Email 1.1과 함께 작동합니다.

pdfBytes a byte[] PDF 문서의 바이트를 포함합니다. 그것이 당신에게 적합하지 않다면, 당신은 다른 것을 시도 할 수 있습니다 DataSource 구현이지만, 그들이 작동한다고 보장 할 수는 없습니다.

(위의 것은입니다 org.apache.commons.mail.ByteArrayDataSource)

다른 팁

사용 :

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

a HtmlEmail Commons-Email 1.1을 사용하면 결과 이메일이 메시지 (텍스트 또는 HTML)를 첨부 파일로 둘러싸게합니다.

a로 전환 MultiPartEmail 이것을 수정했습니다.

현재 릴리스 후보 v1.2 RC2를 1.1로 사용해보십시오 (사용한 것 같아요) HTML 레이아웃 문제가 있습니다.

커먼즈-메일 1.2 RC2

htmlemail#embed (url, string) 메소드를 사용합니다.

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

최신 릴리스 (1.5)에서 다음 코드가 저를 위해 작동했습니다.

 email.attach(new FileDataSource(attachmentFileObject), "AttachmentName", "Description");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top