9

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();
4

6 に答える 6

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

これはcommons-email1.1で機能します。

pdfBytesbyte[]PDFドキュメントのバイトを含む必要があります。それがあなたに合わない場合は、他のDataSource実装を試すことができますが、それらが機能することを保証することはできません(ただし、機能するはずです)。

(上のものはorg.apache.commons.mail.ByteArrayDataSource

于 2010-01-20T22:06:11.893 に答える
4

以下を使用することに注意してください。

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

commons-email 1.1をHtmlEmail使用すると、結果の電子メールのメッセージ(テキストまたはhtml)が添付ファイルとして囲まれます。

これをMultiPartEmail修正しました。

于 2011-02-08T08:53:32.853 に答える
3

1.1(おそらくあなたはそれを使用していると思います)にはいくつかのhtmlレイアウトの問題があるので、現在のリリース候補v1.2RC2を試してみることをお勧めします

commons-Eメール1.2RC2

于 2009-10-22T23:43:05.600 に答える
0

HtmlEmail#embed(URL、String)メソッドを使用します。

File pdf = new File(pdfPath);
email.embed(pdf.toURI().toURL(), pdf.getName)
于 2013-10-24T07:43:02.720 に答える
0

最新リリース(1.5)では、次のコードが機能しました

 email.attach(new FileDataSource(attachmentFileObject), "AttachmentName", "Description");
于 2018-06-30T18:58:03.377 に答える
0

Javaではアップキャストとダウンキャストを使用できます。

  1. HtmlEmailはMultiPartEmailを拡張し、attacchメソッドはMultiPartEmailクラスを返します。
  2. HtmlEmailはMultiPartEmailに変換され、tempEmail.attach(添付ファイル)を使用します。
  3. 次に、MultiPartEmailはHtmlEmailクラスに変換されます。

    HtmlEmail email;
    MultiPartEmail tempEmail;
    
    // HtmlEmail -> MultiPartEmail
    tempEmail = new HtmlEmail();
    
    // Add a attachment
    EmailAttachment attachment = new EmailAttachment();
    attachment.setURL(new URL(fileURL));
    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    attachment.setName(MimeUtility.encodeText(fileName));
    tempEmail = tempEmail.attach(attachment);
    
    // MultiPartEmail -> HtmlEmail
    email = (HtmlEmail)tempEmail;
    
于 2020-04-20T02:35:27.333 に答える