을 손상하기 :자바 메일 첨부 파일이 메일에 파일을 첨부 내 코드입니다
Multipart mp=new MimeMultipart("mixed");
BodyPart mbody=new MimeBodyPart();
mbody.setHeader("Content-Type", "text/html; charset=us-ascii");
mbody.setHeader("Content-Transfer-Encoding","7bit");
mbody.setContent(content2, "text/html");
mp.addBodyPart(mbody);
for(File file:f){
BodyPart mbody2=new MimeBodyPart();
DataSource ds=new FileDataSource(file.getAbsolutePath());
mbody2.setDataHandler(new DataHandler(ds));
mbody2.setFileName(ds.getName());
mbody2.setHeader("Content-Type", "multipart/mixed");
mbody2.setHeader("Content-Transfer-Encoding", "base64");
mp.addBodyPart(mbody2);
}
m.setContent(mp);
content2
내가 전자 메일에 내장하고있는 HTML 콘텐츠, 그리고 내가 ArrayList에 f
에서 파일을 추가하고 .
파일이 첨부 되어도 제대로 전자 메일을 받았지만 데이터가 손상되어 첨부 파일을 열 수 없다는 문제가 있습니다. 이것은 jpegs, pdfs, 스프레드 시트, 워드 문서 및 txt 파일처럼 첨부하려고 시도한 모든 파일에 대해 발생합니다.
여기서 읽을 수 있습니다 : https://community.oracle.com/thread/1589120 JavaMail이 파일의 이진 데이터를 망가 뜨리는 인코딩을 사용하고 mbody2.setHeader("Content-Transfer-Encoding", "base64");
을 추가하면이 문제를 해결해야하지만 저에게는 적합하지 않기 때문에 이런 일이 발생할 수 있습니다.
무엇이 잘못 될 수 있는지에 대한 아이디어가 있습니까?
감사 디버깅을위한
헤더를 빼내는 것이 트릭을 만들었습니다. 왜 헤더가 이메일을 엉망으로 만들었는지 설명하십시오. 감사합니다. . –
첨부 파일의 Content-Type을 덮어 쓰는 것이 었습니다. 첨부하고있는 파일의 유형에 상관없이 그것이 다중 부분이라고 말할 수 있어야합니다. 가장 확실한 것은 아니었다. ** 멀티 파트에 ** 포함되어있었습니다. 다른 것들은 JavaMail이 (거의 항상) 올바른 컨텐트 유형과 인코딩을 선택할 것이기 때문에 불필요한 것들이었습니다. –