3

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

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

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

我的应用程序是否有任何库或任何其他方式来“解包”这些文件,这样我就可以在不手动执行的情况下获取附件?

谢谢!

4

3 回答 3

4

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

使用包: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);
于 2013-05-29T11:29:09.287 回答
2

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

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

它没有很好的文档记录,但它非常简单,你应该能够在稍微深入研究代码后使用。使用 composer 可以很容易地包含它。

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

于 2020-02-19T18:25:03.127 回答
0

我感觉到你的痛苦;处理无视现有广泛建立的标准的专有系统是*。TNEF 上的维基百科页面有一个旨在提供解码器的库列表。祝你好运。

于 2013-05-29T10:10:06.203 回答