0

Javamail を使用して会議の招待状を送信しようとしています。マルチパートでは、1.HTML メール本文部分 2.Calendar Inivte 部分 3.署名画像部分の 3 つの mimebody 部分を作成しています(この部分が問題です)。

しかし、メールを送信すると、署名画像の部分が AT00001.bin に変換され、署名画像の代わりに表示されます。

メールからカレンダーの招待部分を削除すると、画像が表示されます。 いくつかの調査の結果、このファイルの作成を避けるために、添付部分はメールの最後でなければならないことがわかりましたが、その後も問題は続きます.(mimebody addpart シーケンスでわかるように)

コード部分は次のとおりです。

        Multipart multipart = new MimeMultipart("mixed"); 
        BodyPart messageBodyPart = buildHtmlTextPart(); //html is read and added to the mail body part
        BodyPart calendarPart = buildCalendarPart();
        BodyPart signatureImagePart = buildSignatureImagePart(); //image is read and added as a content part of html.

        multipart.addBodyPart(messageBodyPart);
        multipart.addBodyPart(calendarPart);
        multipart.addBodyPart(signatureImagePart);

buildSignatureImagePart() は以下の通りです。

        MimeBodyPart signatureimagepart = new MimeBodyPart();
        DataSource fds = new FileDataSource(filePath); //filepath is image file location

        signatureimagepart.setDataHandler(new DataHandler(fds));
        signatureimagepart.setHeader("Content-ID", "<my-image-id>");

buildHtmlTextPart() は以下の通り、

        MimeBodyPart descriptionPart = new MimeBodyPart();

        descriptionPart.setContent("<html><body><b>Test</b> email <img src='cid:my-image-id'></body></html>", "text/html; charset=utf-8");

画像部分を取得するためにこれで何か間違っているかどうか教えてください。同じことを行う他の方法はありますか?

4

1 に答える 1

0

メッセージの構造が間違っています。

あなたが望むのは、外側のマルチパート/混合で、最初のボディ部分はマルチパート/関連であり、2 番目のボディ部分はカレンダーの添付ファイルです。multipart/related には、html テキストとそれが参照する署名画像の 2 つの部分があります。

于 2016-10-21T06:27:32.923 に答える