如何使用PHP脚本提取TNEF winmail.dat?

时间:2013-05-28 13:03:35

标签: php linux imap tnef winmail.dat

我正在开发一种功能,可以读取邮箱中的所有电子邮件,并处理附件文件。

从Outlook发送任何邮件时,其附件将另存为winmail.dat。 [请注意,我已经有了使用IMAP PHP下载附件的代码。我的电子邮件附件存储在服务器上的代码库中的一个文件夹中。]我需要将winmail.dat附件提取为其原始格式。到目前为止我遇到的解决方案都需要手动操作,如提供提取文件的在线工具,或者允许我们转换.DAT文件的软件。

但我需要使用脚本或任何自动过程(如cron或其他东西)进行提取。 [我正在使用Linux - centos 5.7服务器。]

我的应用程序是否有任何库或任何其他方式“解压缩”这些文件,以便我可以逐个手动获取附件?

谢谢!

3 个答案:

答案 0 :(得分:3)

从中下载rpm包 http://pkgs.org/centos-5-rhel-5/flexbox-x86_64/tnef-1.4.7-1.x86_64.rpm.html

使用包:tnef-1.4.7-1.x86_64.rpm

安装:

复制到文件夹并安装rpm tnef包 -

rpm -ivh /path-of-downloaded-package/tnef-1.4.7-1.x86_64.rpm

提取附件[winmail.dat]:

进入要提取附件文件的目录。

cd /path-to-extract-attachment/

运行命令:

tnef /path-of-attachment/winmail.dat
  

等效的PHP脚本:

chdir('/path-to-extract-attachment/');

$cmd = "tnef /path-of-attachment/winmail.dat";
shell_exec($cmd);

答案 1 :(得分:1)

有一个简单的库:https://github.com/QualityUnit/TNEFDecoder

您可以使用它轻松地从TNEF文件中提取附件。

虽然没有很好的文档记录,但是它非常简单,如果经过一点点的代码学习,您应该可以使用。可以使用作曲家轻松添加它。

这是TNEF解码算法的纯PHP实现,该算法从旧的Squirrelmail插件中提取并移植为与PHP 7.4兼容

答案 2 :(得分:0)

我感受到你的痛苦;处理无视现有广泛建立的标准的专有系统是*的痛苦。 wikipedia page on TNEF有一个旨在提供解码器的库列表。祝你好运。