이 질문은 다소 긴 생각이지만, 아무런 쓸모없이 몇 시간을 보냈습니다. 웹 서버에 이메일 파일을 생성하는 코드가 있으며 사용자가 해당 이메일을 다운로드하여 Outlook에서 열 수 있습니다. 여기에서 그들은 이메일을 여러 사람들에게 보내기 전에 다양한 수동 변경을 할 수 있습니다.Outlook .MSG와 .OFT 파일 형식간에 차이점이 있습니까?
지금은 기본적으로 이메일 템플릿 인 .OFT 파일을 생성합니다. 내가하고 싶은 것은 실제 이메일 인 .MSG 파일을 생성하는 것입니다. 보기의 이진 관점에서 볼 때 이러한 파일 형식은 동일합니다. 그들은 동일한 스트림 ID와 속성 및 물건을 가지고 있습니다.
내 접근 방식은 Outlook에서 빈 이메일 메시지를 먼저 만든 다음 Base.oft라는 파일에 저장하는 것이 었습니다. 내 코드에서 문서를 열고 HTML 전자 메일 본문의 ID 인 스트림 ID __substg1.0_1013001E
을 수정합니다. 그런 다음 파일을 저장하고 필렛에 작성합니다. 이것은 완벽하게 작동합니다.
MSG 형식으로 동일한 접근 방식을 시도했습니다. 빈 이메일 메시지를 작성하여 Base.msg로 저장하고 동일한 스트림 ID를 수정합니다. 결과 파일을 보면 새로운 몸체가 실제로 거기에 있으며 저장됩니다. 그러나 전자 메일을 열면 본문이 여전히 비어 있습니다.
Outlook에서 본문을 입력하고 기본 파일에 저장하면 그 스트림이 0_1013001E 스트림에서 볼 수 있습니다. 그런 다음 다른 본문으로 해당 스트림을 수정하면 새 본문이 실제로 파일에 저장되었는지 확인할 수 있지만 Outlook에서 메시지를 열면 이전 본문이 표시됩니다. 전자 메일 본문이 .MSG 형식의 파일에서 다른 위치에 저장되어있는 것처럼 보이지만 각 스트림을 살펴본 결과 전자 메일 본문처럼 보이는 다른 내용은 찾을 수 없습니다.
아마도 .MSG 파일은 암호화되어 있거나 해당 본문이 .OFT 파일과 달리 독점적 인 바이너리 형식으로 저장되어 있습니까? 다행스럽게도 인터넷을 샅샅이 뒤졌고 기본적으로 이러한 형식을 전혀 발견하지 못했기 때문에 누군가이 사실에 대한 통찰력을 가지고 있기를 바랍니다.
업데이트 :
는 그것은 .MSG 형식으로 저장을 보인다 스트림 ID __substg1.0_10090102
의 몸 - 일부 바이너리 형태로 (확실하지 않은 것.) 인코딩 내가 스트림을 삭제 (또는으로 설정하면 \0
하나는, 파일이됩니다 손상. 모든
감사합니다. 그 비트를 찾는 것이 내 최선의 방법이라고 생각합니다. 실제로 RTF 스트림을 원하지 않습니다. HTML 스트림을 사용하여 수정하고 싶습니다. 그리고 MAPI 종속성을 취하는 것이 옳습니다. 웹 서버는 나쁜 생각 일 것입니다. 아마도 Outlook 설치 또는 무언가에서 모든 종류의 모호한 DLL을 찾아서 관리 된 래퍼를 써야 할 것입니다. –