2

JavaMail を使用して、添付ファイル付きの EML ファイルを作成します。

単純な EML ファイルは正常に作成されましたが、添付ファイルの追加が正しく機能しません。PDFファイルを追加します。私の EML ファイルは正常に作成されます。生成された EML ファイルを Outlook で開くと、PDF ファイルが添付ファイルとして表示されるのではなく、EML ファイル自体が添付ファイルとして表示されます。誰にもアイデアがありますか?

私は2つのバリアントを試しました(同じ結果で)、FileDataSourceクラスと簡単な方法を使用しましMimeBodyPart#attachFile(File)た.

例を投稿します:

File pdfFile = new File("somePdfFile");

Properties p = System.getProperties();
Session session = Session.getInstance(p);
MimeMessage message = new MimeMessage(session);
// MimeBodyPart txt = new MimeBodyPart();
// txt.setText("");
MimeBodyPart mbp = new MimeBodyPart();
mbp.attachFile(attachment);
// FileDataSource fds = new FileDataSource(attachment);
// fds.setFileTypeMap(new FileTypeMap() {
//    
//   @Override
//   public String getContentType(String arg0) {
//     return "application/pdf";
//   }
//    
//    @Override
//    public String getContentType(File file) {
//      return "application/pdf";
//    }
//      
//  });
//  mbp.setDataHandler(new DataHandler(fds));
//  mbp.setFileName("\"" + attachment.getName() + "\"");
//  mbp.setDisposition(MimePart.ATTACHMENT);
//  mbp.setHeader("Content-ID", "Attachment");
Multipart mp = new MimeMultipart();
//  mp.addBodyPart(txt);
mp.addBodyPart(mbp);
message.setContent(mp);
File emlFile = new File("message.eml");
emlFile.createNewFile();
message.writeTo(new FileOutputStream(emlFile));

// do something with the EML file
// Desktop.getDesktop().open(emlFile);

Java で .eml (電子メール) ファイルを作成する


ご回答ありがとうございます。PDF ファイル (テストに使用します。これは、Crystal Reports で生成された単純な HelloWorld です) と、生成された EML ファイル (PDF ファイルを含む必要があります) をアップロードしました。

リンクされた EML ファイルを Apple Mail または Outlook Express で開くと機能することに気付きました (ただし、編集はできません)。多分それはMicrosoft Outlookの問題ですか?

リンクは削除されます

4

2 に答える 2

1

Zubi、添付ファイルのコンテンツ タイプが「application/octet-stream」に設定されていることが問題のようです。そのため、メール リーダーは、存在しないメッセージの「テキスト」本文の代替表示として PDF ファイルを使用しているように見えます (単に空白です)。

Mimeを扱ってから1年以上が経ちましたが、A) メッセージに本文を入れてください。B) 添付ファイルのタイプを確認してください。 application/pdf に設定されています。うまくいけば、これにより、メールの読み取りが PDF をメッセージの主要な本文として表示しようとするのを防ぐことができます。

それ以外は普通に見えます...さて、Outlookは本体にRFC822ヘッダーがないのでビッチかもしれません。少なくとも a From:To:、および aを追加することをお勧めしSubject:ます。

メッセージは MY MIME 解析コードを渡しました...

于 2009-01-07T21:58:05.660 に答える
1

私が言及したヘッダー行をメッセージの一番上に追加してみて、Outlook がそれをどのように処理するかを確認してください。、 、さらには実際のデータを含むを追加するTo:From:、Outlook はそれを単なるファイルではなくメッセージとして扱う可能性が高くなります。Subject:Date:

于 2009-01-08T18:07:39.057 に答える