在java中创建一个电子邮件对象并将其保存到文件

新手上路,请多包涵

我需要备份 PST 文件(Outlook 存储)中包含的电子邮件。我正在使用 libpst,这是我在网上找到的唯一免费库 ( http://code.google.com/p/java-libpst/ )

所以我可以访问每封电子邮件中的所有信息(主题、正文、发件人 ecc..),但我需要将它们放在一个文件中

这里有人说你可以从“javax.mail.Message”对象创建一个 EML 文件: Create a .eml (email) file in Java

问题是:我如何创建这个 Message 对象?我没有服务器或电子邮件会话,只有电子邮件中包含的信息

ps 创建一个 .msg 文件也可以

原文由 Pronte 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 806
2 个回答

您创建 Message 对象的方式与创建发送对象的方式相同,但不是发送它,而是将其写入文件。您不需要电子邮件服务器。在 JavaMail 下载 中包含的演示程序和 JavaMail FAQ 中有很多创建消息的示例。参见 Message.writeTo方法 将消息写入文件(Message是一个Part,writeTo是在Part上)。

原文由 Bill Shannon 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是使用 java mail api 创建有效 eml 文件的代码。适用于 thunderbird 和其他电子邮件客户端:

 public static void createMessage(String to, String from, String subject, String body, List<File> attachments) {
    try {
        Message message = new MimeMessage(Session.getInstance(System.getProperties()));
        message.setFrom(new InternetAddress(from));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
        message.setSubject(subject);
        // create the message part
        MimeBodyPart content = new MimeBodyPart();
        // fill message
        content.setText(body);
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(content);
        // add attachments
        for(File file : attachments) {
            MimeBodyPart attachment = new MimeBodyPart();
            DataSource source = new FileDataSource(file);
            attachment.setDataHandler(new DataHandler(source));
            attachment.setFileName(file.getName());
            multipart.addBodyPart(attachment);
        }
        // integration
        message.setContent(multipart);
        // store file
        message.writeTo(new FileOutputStream(new File("c:/mail.eml")));
    } catch (MessagingException ex) {
        Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(Mailkit.class.getName()).log(Level.SEVERE, null, ex);
    }
}

原文由 salocinx 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题