Создание файла EML с вложениями использовании javamail [закрыт]


Я создам EML-файл с вложением, используя JavaMail.

Я успешно создал простой файл EML, но добавление вложения не работает должным образом. Я собираюсь добавить PDF-файл. Мой EML-файл будет создан успешно. Если я открою сгенерированный файл EML с Outlook, я найду не мой PDF-файл как вложение, но я найду сам файл EML как вложение. У кого-нибудь есть идея?

Я попробовал два варианта (с одинаковым результатом), я использовал класс 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);

Создайте а .eml (email) файл в Java


Спасибо за ваш ответ. Я загрузил PDF-файл (который я использую для тестирования, это простой HelloWorld, созданный с помощью Crystal Reports) и сгенерированный EML-файл, который должен включать PDF-файл.

Я только что заметил, что если я открою связанный файл EML с Apple Mail или Outlook Express, он будет работать (но без возможности редактирования). Может быть, это вопрос времени? Microsoft Outlook?

ссылки удаляются

2 2

2 ответа:

Вы должны попробовать добавить строки заголовка, которые я упомянул, в самую верхнюю часть сообщения и посмотреть, как Outlook справляется с этим. Добавить a To:, From:, Subject: и, возможно, даже Date: с реальными данными в них, и Outlook, скорее всего, будет рассматривать его как сообщение, а не просто файл.

Зуби, похоже, проблема в том, что тип содержимого во вложении установлен в "application / octet-stream". Таким образом, похоже, что программа чтения почты использует PDF-файл в качестве альтернативного дисплея для "текстового" тела сообщения, которое не существует (оно просто пустое).

Вы должны простить меня, прошло уже больше года с тех пор, как я имел дело с Mime, но я думаю, что вы захотите: а) поместить текст в сообщение, Б) убедиться, что тип вложения установлен на приложение / pdf. Надеюсь, это предотвратит попытки чтения почты отобразить PDF в качестве основного тела сообщения.

Кроме этого, это выглядит нормально... Теперь Outlook может суетиться, потому что в основном теле нет заголовков RFC 822. Возможно, вы захотите добавить по крайней мере From:, To:, и a Subject:.

Сообщение передало мой код синтаксического анализа MIME...