2012-03-14 2 views
-1

PHP로 구동되는 웹 응용 프로그램을 개발 중이며 Outlook .msg에서 첨부 파일을 추출해야합니다. 나는 PHP, Python 및 인접한 웹 언어에 대해 궁금해하지 않으므로 쉽게 가져가주십시오. 궁금한 점이 있으면 전자 메일 주소를 확인하고 본문과 첨부 파일을 가져 와서 DMS에 추가하십시오. 지금 몇 시간 씩 인터넷 검색 중이며 PHP 클래스 또는 이와 유사한 방법과 같은 쉬운 방법이 없으므로 해결 방법을 많이 알려줄 것입니다. :).MSG에서 첨부 파일을 추출하여 PHP 응용 프로그램에서 사용합니다.

답변

1

Outlook MSG 파일은 실제로 COM Structured Storage입니다. PEAR OLE을 사용하여 읽을 수 있습니다. 그러나이 페이지는 그것이 유지되지 않는다고 주장합니다.

당신이 문서를 열 관리하는 경우에도, 당신은 아무것도 찾을 수 있도록 내부 레이아웃을 이해해야합니다 유의하십시오. FileFormats에는 MSG 파일을 탐색 할 때 참조로 사용할 수있는 유용한 내부 정보가 나열되어 있습니다.

+0

답변 주셔서 감사 합니다만, PHP 스크립트 (http://php.net/manual/en/function)에서 .msg 추출기 (http://e-viewers.com/)를 사용하기로 결정했습니다. .exec.php) –

1

나는 그것이 HTML로 파일을 처리하는 Windows 서버에 MailConverter 명령 줄을 사용하는 것이 었습니다 어떻게 발견하는 유일한 방법. 프로그램은 $ 60입니다.

먼저 MailConverter 명령 줄 생성기를 사용하여 모든 파일을 처리 할 수 ​​있도록 템플릿 배치 파일을 만듭니다. [[SOURCE]]와 [[DESTINATION]]이라는 두 개의 자리 표시 자로 실제 파일 이름을 변경했습니다.

chcp 65001 
"C:\Program Files (x86)\CoolUtils\TotalMailConverter\MailConverter.exe" "[[SOURCE]]" "[[DESTINATION]]" -kfs -c XHTML -template [name] -body -clearsubj -timeout 10000 -dpi 300 -pc M -PDFAuthor Softplicity -PDFProducer Softplicity -TM 0.3 -LM 0.3 -BM 0.3 -RM 0.3 -ps A4 -tc G4 -tjq 80 -multipage -HeadText "Page [page]" -HeadAlign c -HeadFont Tahoma -HeadSize 10 -FootText [date] -FootAlign c -FootFont Tahoma -FootSize 10 -toclinestyle D -toclinecolor silver -tocfont [Calibri,11,black] -tocmargins [0.80,0.80,0.80,0.80] -dco [TOC] 

PHP 코드는 플레이스 홀더를 대체하고 최종 배치 파일을 생성 한 다음 실행하여 html을 출력합니다. 이 코드는 현재 프로덕션 환경에 있습니다.

동일한 출력 파일을 두 번 처리하려고하면 끊기 때문에 출력 파일이 먼저 있는지 확인해야합니다.

<?php 
     $filename = "template.bat"; 
     $handle = fopen($filename, "r"); 
     $contents = fread($handle, filesize($filename)); 
     fclose($handle); 

     //any name ok for output 
     $new_path = str_replace(".msg", "converted.html", $path); 

     if (!file_exists($new_path)) { 
      $new_content = str_replace("[[SOURCE]]", $path, $contents); 
      $new_content = str_replace("[[DESTINATION]]", $new_path, $new_content); 

      //write the new batch command to a new file 
      $fp = fopen('convert.bat', 'w'); 
      fwrite($fp, $new_content); 
      fclose($fp); 

      //run the batch file 
      passthru ('convert.bat'); 
      //wait a couple of seconds to let the exe process the file 
      sleep(2); 
     } 

     $filename = $new_path; 
     $handle = fopen($filename, "r"); 
     $contents = fread($handle, filesize($filename)); 
     fclose($handle); 

     die($contents); 
?> 
관련 문제