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