У меня есть скрипт, который использует cpanel pipe для выполнения php-файла при получении почты. Моя проблема в том, что всякий раз, когда я отправляю письмо с вложениями; библиотека mime_parser.php также не декодирует эту информацию. Вот мой код:
#!/usr/bin/php -q
<?php
require_once('inc/engage.php');
// Create socket
$sock = fopen("php://stdin", 'r');
$email = '';
while(!feof($sock)){
$email .= fread($sock, 1024);
}
fclose($sock);
require_once('libraries/rfc822_addresses.php');
require_once('libraries/mime_parser.php');
$mime = new mime_parser_class;
$mime->ignore_syntax_errors = 1;
$parameters = array('Data' => $email);
$mime->Decode($parameters, $decoded);
$DB->query("INSERT INTO email_accounts_mail (`message`) VALUES('".serialize($decoded)."')");
?>
rfc822_addresses.php: https://raw.githubusercontent.com/suhastech/pushmail/master/class/rfc822_addresses.php
mime_parser.php: https://raw.githubusercontent.com/ryancramerdesign/EmailImage/master/pop3_classes/mime_parser.php
Я хочу, чтобы электронное письмо расшифровывало сообщение с вложениями и без них. Теперь он декодирует его без вложений; но не с … что мне не хватает?
Я понял это сам. Сохраняя данные в папке tmp и удаляя их после их использования, я мог получить все данные, сохраненные вложениями. Это было сделано путем добавления атрибута SaveBody в массив параметров с указанной папкой (у меня была tmp), а затем создания папки. После того, как я закончу с содержимым в папке, я удаляю все файлы там, чтобы сэкономить место. 🙂
Других решений пока нет …