Java에서 .eml (이메일) 파일을 만듭니다
문제
누구 든지이 작업을 수행하는 방법을 아는 사람이 있습니까? 이메일의 모든 정보 (신체, 주제, 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");
제휴하지 않습니다 StackOverflow