Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从.MSG中提取附件以在PHP应用程序中使用它们_Php - Fatal编程技术网

从.MSG中提取附件以在PHP应用程序中使用它们

从.MSG中提取附件以在PHP应用程序中使用它们,php,Php,我正在开发一个PHP驱动的web应用程序,需要从Outlook.msg中提取附件。除了PHP、Python和邻近的web语言之外,我并不感到奇怪,所以请让我放松一下。 如果有人好奇,任务是检查电子邮件地址,获取正文和附件,并将它们添加到DMS中。 我现在在谷歌上搜索了几个小时,我发现没有像PHP类或类似的简单方法,所以任何解决方法都会非常感激:Outlook MSG文件实际上是。您可能可以使用。但是,该页面声称它是未维护的 请记住,即使您设法打开了文档,也需要了解其内部布局才能找到任何内容。似乎

我正在开发一个PHP驱动的web应用程序,需要从Outlook.msg中提取附件。除了PHP、Python和邻近的web语言之外,我并不感到奇怪,所以请让我放松一下。 如果有人好奇,任务是检查电子邮件地址,获取正文和附件,并将它们添加到DMS中。
我现在在谷歌上搜索了几个小时,我发现没有像PHP类或类似的简单方法,所以任何解决方法都会非常感激:

Outlook MSG文件实际上是。您可能可以使用。但是,该页面声称它是未维护的


请记住,即使您设法打开了文档,也需要了解其内部布局才能找到任何内容。似乎列出了一些有用的内部信息,您可能希望在浏览MSG文件时作为参考使用。

我发现的唯一方法是使用Windows服务器上的命令行将文件处理为HTML。这个项目大约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);
?>

感谢您的回答,但是我们已经决定使用php脚本中的.msg提取器