【问题标题】:How to extract TNEF winmail.dat using a PHP script?如何使用 PHP 脚本提取 TNEF winmail.dat?
【发布时间】:2013-05-28 13:03:34
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: php linux imap tnef winmail.dat


    【解决方案1】:

    从以下位置下载 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);
    

    【讨论】:

    • 它确实可以提取任何东西。我得到的唯一反应是,如果我提供了一个无效文件,它会告诉我它不是 tnef 格式,但如果它是正确的,它不会输出或写入任何文件。
    【解决方案2】:

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

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

    它的文档不是很好,但它很简单,你应该可以在稍微深入研究代码后使用。使用 composer 可以很容易地包含它。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多