我需要备份PST文件(outlook存储)中包含的电子邮件。 我正在使用libpst,这是我在网上找到的唯一免费图书馆 (http://code.google.com/p/java-libpst/)
所以我可以访问每封电子邮件中的所有信息 (主题,身体,发件人ecc ..),但我需要把它们放在一个文件
这里有人说你可以从“javax.mail.Message”对象创建一个EML文件: Create a .eml (email) file in Java
问题是:我如何创建这个Message对象? 我没有服务器或电子邮件会话,只有电子邮件中包含的信息
P.S。 创建.msg文件也没关系
答案 0 :(得分:10)
以下是使用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);
}
}
答案 1 :(得分:6)
您创建一个Message对象的方式与创建一个Message对象的方式相同, 但不是发送它,而是将其写入文件。您不需要电子邮件 服务器。在演示程序中有很多创建消息的例子 包含在JavaMail download和JavaMail FAQ中。见 Message.writeTo method将消息写入文件(消息是一个部分, 和writeTo在部分)。