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

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

Вопрос

Я создам 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 (электронная почта) на Java <Ч>

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

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

Ссылки удалены

Это было полезно?

Решение

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

Другие советы

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

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

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

В сообщении передан код синтаксического анализа МОЙ MIME ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top