2012-03-14 42 views
-1

PHPドリブンWebアプリケーションを開発しています。Outlook .msgから添付ファイルを抽出する必要があります。私はPHP、Python、それに隣接するWeb言語の外では不思議に思っていません。 興味がある場合は、メールアドレスを確認し、本文と添付ファイルを取得して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

WindowsサーバーでMailConverterコマンドラインを使用してファイルをHTMLに処理する方法が見つかっただけです。プログラムは$ 60です。

まず、MailConverterコマンドラインジェネレータを使用して、任意のファイルを処理できるようにテンプレートバッチファイルを作成します。実際のファイル名は[[SOURCE]]と[[DESTINATION]]の2つのプレースホルダで変更しました。

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を出力します。このコードは現在運用環境にあります。

同じ出力ファイルを2回処理するとハングアップするので、出力ファイルが最初に存在するかどうかを確認する必要があります。

<?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); 
?> 
関連する問題