Создание 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 (электронная почта) на 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 ...