我正在开发一种功能,可以读取邮箱中的所有电子邮件,并处理附件文件。
从Outlook发送任何邮件时,其附件将另存为winmail.dat。 [请注意,我已经有了使用IMAP PHP下载附件的代码。我的电子邮件附件存储在服务器上的代码库中的一个文件夹中。]我需要将winmail.dat附件提取为其原始格式。到目前为止我遇到的解决方案都需要手动操作,如提供提取文件的在线工具,或者允许我们转换.DAT文件的软件。
但我需要使用脚本或任何自动过程(如cron或其他东西)进行提取。 [我正在使用Linux - centos 5.7服务器。]
我的应用程序是否有任何库或任何其他方式“解压缩”这些文件,以便我可以逐个手动获取附件?
谢谢!
答案 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有一个旨在提供解码器的库列表。祝你好运。