문제

누구 든지이 작업을 수행하는 방법을 아는 사람이 있습니까? 이메일의 모든 정보 (신체, 주제, CC, BCC)의 모든 정보를 얻었고 .eml 파일을 생성해야합니다.

도움이 되었습니까?

해결책

당신은 구성 할 수 있습니다 javax.mail.Message 객체 (또는 메일 서버에서 이미 구성된 경우)를 사용할 수 있습니다. writeTo() 파일에 저장하는 메소드. 보다 Javamail 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);
    }
}

EML 파일은 단지 일반 텍스트 파일입니다. 헤더는 빈 선으로 신체에서 분리됩니다. 헤더는 다음과 같습니다.

From: "DR CLEMENT OKON" <drclement@nigerianspam.com>
To: "You" <you@yourdomain.com>
Subject: REQUEST FOR URGENT BUSINESS RELATIONSHIP 
Date: Tue, 30 Sep 2008 09:42:47 -0400

자세한 내용은 공식 사양입니다 RFC 2822. 실제로 일부 RFC만큼 읽기가 어렵지 않습니다.

편집 : "일반 텍스트"를 말했을 때 나는 잠시 생각해야했습니다. 나는 정말로 8 비트 "확장 된 ASCII"가 아닌 평범한 ASCII를 의미했다.

일반적인 EML 파일을 보면 서버로 이동 한 텍스트 통신의 원시 덤프처럼 보입니다. 따라서 메일 헤더와 본문이 포함 된 텍스트 파일입니다. EML 파일 내부의 올바른 형식으로 첨부 파일, 다른보기 등을 얻으려면 본문과 부분을 최소화해야합니다.

HTML 물건을 추가하려면 추가해야합니다.

content.setHeader("Content-Type", "text/html"); 

(Marco Sulla가 말했듯이) 그러나 또한 변화합니다

message.setContent(multipart);

에게

message.setContent(multipart,"text/html");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top