2014-06-13 5 views
0

을 손상하기 :자바 메일 첨부 파일이 메일에 파일을 첨부 내 코드입니다

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");을 추가하면이 문제를 해결해야하지만 저에게는 적합하지 않기 때문에 이런 일이 발생할 수 있습니다.

무엇이 잘못 될 수 있는지에 대한 아이디어가 있습니까?

감사 디버깅을위한

답변

1

시간을 ...

첫째, setHeader 호출을 모두 제거; 그들 중 일부는 잘못되었으며 그들 중 누구도 필요하지 않습니다.

그런 다음 문제가 송신 측 또는 수신 측에 있는지 확인하십시오. 여러 전자 메일 독자가 모두 첨부 파일에 문제가 있는지 확인하십시오.

일반 텍스트 첨부 파일을 보내보십시오. 그들은 또한 부패한가요?

protocol trace 간단한 첨부 파일이있는 간단한 메시지를 보낼 때 어떤 일이 발생하는지 표시하여 메시지가 올바르게 구성되었는지 확인할 수 있습니다.

어떤 JavaMail 버전을 사용하고 있습니까?

첨부 파일을보기 위해 사용하는 메일 판독기는 무엇입니까?

+0

헤더를 빼내는 것이 트릭을 만들었습니다. 왜 헤더가 이메일을 엉망으로 만들었는지 설명하십시오. 감사합니다. . –

+0

첨부 파일의 Content-Type을 덮어 쓰는 것이 었습니다. 첨부하고있는 파일의 유형에 상관없이 그것이 다중 부분이라고 말할 수 있어야합니다. 가장 확실한 것은 아니었다. ** 멀티 파트에 ** 포함되어있었습니다. 다른 것들은 JavaMail이 (거의 항상) 올바른 컨텐트 유형과 인코딩을 선택할 것이기 때문에 불필요한 것들이었습니다. –