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



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

这样我就可以访问每封邮件中的所有信息(主题,正文,发送者等…),但我需要把它们放在一个文件

这里有人说您可以从"javax.mail"创建一个EML文件。消息对象:用Java创建一个。email文件

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

中包含的信息

注。创建一个。msg文件也可以

下面是使用java邮件api创建有效邮件文件的代码。适用于雷鸟和其他电子邮件客户端:

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);
    }
}

创建Message对象的方式与创建send对象的方式相同。但不是发送,而是将其写入文件。你不需要电子邮件服务器。在演示程序中有很多创建消息的例子包含在JavaMail下载中,以及JavaMail FAQ中。看到消息。writeTo方法将消息写入文件(message is a Part,

您可以使用mimeMessageHelper来创建消息,如下所示:

    import org.springframework.mail.javamail.MimeMessageHelper;
    
    public methodTocreateMessageObject(){
    MimeMessage message = mailSender.createMimeMessage();
    
    MimeMessageHelper mh= new MimeMessageHelper(message, true);
    mh.setSubject(subject);
    mh.setTo(toArray(to));
    if (CollectionUtils.isNotEmpty(cc)) {
    mh.setCc(toArray(cc));
    }
    mh.setFrom(from);
    
    mh.setText(body, true);
    
            if (attachmentFilenames != null) {
                for (String filename : attachmentFilenames) {
                    FileSystemResource file = new FileSystemResource(filename);
                    mh.addAttachment(file.getFilename(), file);
                }
            }
    
            if (inlineAttachments != null && contentType!=null) {
                for (Entry<String, byte[]> inlineAttach : inlineAttachments.entrySet()) {
    
                    String cId = inlineAttach.getKey();
                    byte[] attachInByteStream = inlineAttach.getValue();
                    InputStreamSource attachSource = new ByteArrayResource(attachInByteStream);
                    mh.addInline(cId, attachSource, contentType);
    
                }
            }
ByteArrayOutputStream output = new ByteArrayOutputStream();
        message.writeTo(output);
        Date lastUpdatetime = new Date();
        try(OutputStream outputStream = new FileOutputStream("D:/mail2.eml")) {
            output.writeTo(outputStream);
        }
    }

相关内容

  • 没有找到相关文章

最新更新