Как извлечь 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 есть список библиотек, которые предназначены для предоставления декодера. Удачи.