Как извлечь TNEF winmail.dat с помощью сценария PHP?

Я разрабатываю функциональность, которая будет читать все электронные письма из почтового ящика и обрабатывать файлы вложений.

Когда любая почта отправляется из Outlook, ее вложение сохраняется как winmail.dat. [Обратите внимание, что у меня уже есть код для загрузки вложений с использованием IMAP PHP. Мои вложения электронной почты хранятся в одной папке в моей кодовой базе на сервере.] Мне нужно извлечь вложение winmail.dat в его исходный формат. Все решения, с которыми я сталкивался до сих пор, требуют ручных усилий, таких как онлайн-инструмент, который предоставляет извлеченные файлы, или программное обеспечение, которое позволяет нам конвертировать файлы.DAT.

Но мне нужно извлечь с помощью скрипта или любого автоматизированного процесса, как Cron или что-то. [Я использую Linux - сервер Centos 5.7.]

Есть ли какая-либо библиотека или какой-либо другой способ для моего приложения "распаковать" эти файлы, чтобы я мог получить вложения БЕЗ выполнения этого вручную, один за другим?

Спасибо!

2 ответа

Решение

Загрузите пакет 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);

Вот эта простая библиотека: https://github.com/QualityUnit/TNEFDecoder

Вы можете использовать его для простого извлечения вложений из файлов TNEF.

Это не очень хорошо документировано, но довольно просто, вы сможете использовать if после небольшого углубления в код. Его можно легко включить с помощью composer.

Это чистая PHP-реализация алгоритма декодирования TNEF, извлеченная из старого плагина Squirrelmail и портированная для совместимости с PHP 7.4.

Я чувствую твою боль; Работа с запатентованными системами, которые игнорируют существующие широко установленные стандарты, является болью в *. На странице википедии в TNEF есть список библиотек, которые предназначены для предоставления декодера. Удачи.

Другие вопросы по тегам