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

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

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

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

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

ps创建一个.msg文件也没关系

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

这是使用java mail api创建有效eml文件的代码。 与thunderbird和其他电子邮件客户端一起工作正常:

public static void createMessage(String to, String from, String subject, String body, List 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); } }