2014-02-08 4 views
-1

안녕하세요. 첨부 파일이 2 개있는 이메일을 작성 중입니다. 다른 이메일은 &입니다. 몇 시간의 연구 끝에 모든 것이 예상대로 작동합니다. 한 가지 문제를 해결할 수 없습니다.javax.로 작성된 .msg 파일을 열려고하면 권한 오류가 발생합니다.

좋아, 전자 메일이 열리는 프로그램 인 Outlook이 .eml 확장자를 사용하여 전자 메일을 저장한다는 것을 알고 있습니다. 모든 전자 우편 건물이 끝나면 필자는 이와 같은 tmp 파일에 첨부 파일 전자 메일을 작성합니다.

  msg.writeTo(new FileOutputStream(new File("/tmp/"+contactName+".eml"))); 

내 목표는 당신이받는 사람, 참조, 숨은 참조, 및 제목 등의 모든 필드가 이미 사용 가능하고 편집 할 수 있습니다 엽니하면 이메일과 같은 '초안'을 만드는 것이 었습니다. 이 방법으로이 필드를 작성하면 해당 필드를 편집 할 수있는 유일한 방법은 첨부 파일 전자 메일을 열고 'reply-all'을 누르는 것입니다. 이 추가 단계에는 생성 된 텍스트를 삭제하는 것도 포함됩니다. 에서

: [email protected] [흔한 : [email protected]]

보낸 : 2014년 2월 8일 (토요일) 4:11 PM

제목 : 단종 회사의 제품의주의 사항 내 90 일

그래서 .eml 대신 .msg를 사용해야한다는 것을 알았습니다. 내가 이것을 사용할 때 허가 문제 인 것 같다.

 msg.writeTo(new FileOutputStream(new File("/tmp/"+contactName+".msg"))); 

파일을 열 수 없습니다 : C : \ TMP \ joe_susie.msg 존재하지 않을 수 있습니다 파일이, 당신이 그것을 열 수있는 권한이 없거나 다른 프로그램에서 열려있을 수 있습니다. 파일이 포함 된 폴더를 마우스 오른쪽 단추로 클릭 한 다음 속성을 클릭하여 폴더에 대한 사용 권한을 확인합니다.

권한을 변경하는 데 모든 다른 방법을 시도했지만 아무런 효과가 없습니다. 누군가 파일이 출력 스트림에 기록되는 방식 때문이라고 말했습니다. 나는 심지어 FileOutputStream 객체를 만들려고 시도하고 그것을 명시 적으로 닫았습니다. 그것은 작동하지 않습니다.

실제로 .msg가 편집 가능한 코드를 열어두고 있지만 코드가 작동하지 않는 것을 알고 있습니다. 아무도 이것에 대해 알고 있습니까?

답변

0

MSG 파일은 바이너리 형식입니다. MIME 파일 확장자를 EML에서 MSG로 변경하는 대신 실제로 바이너리 MSG 파일을 만드시겠습니까?

MSG 파일을 만들려면 Redemption과 그 RDOSession을 사용할 수 있습니다. CreateMessageFromMsgFile 방법.

EML 파일에 X-Unsent:1 MIME 헤더를 추가 할 수도 있습니다.

+0

감사 드미트리는 내가 그것에 대해 읽을거야 답변을 얻을 거라고 생각하지 않았다을 – Bgreen

1

프로그램이 다음 행의 FileOutputStream을 닫지 않습니다. 어떤 이유

try (FileOutputStream fos = new FileOutputStream(new File("/tmp/"+contactName+".eml"))) { 
    msg.writeTo(fos); 
    fos.flush(); 
} 

은 Outlook 열기 대화 상자가 '.eml 인'파일을 열 수 없습니다 :

msg.writeTo(new FileOutputStream(new File("/tmp/"+contactName+".eml")));

당신은 같은 것을 다시 작성해야합니다. 당신이 전망에서 .eml (MIME 텍스트) 파일을 열하려는 경우, 당신은 사용 문서화되지 않은 '/ EML'스위치에 의해 수행 할 수 있습니다 :

outlook.exe /eml foo.eml 

을 당신이 '를 엽니 다.MSG '는 기록을 사용하여 수행 할 수 있습니다 전망에서 (바이너리) 파일'/ F '스위치 :

outlook.exe /f foo.msg

관련 문제