Mail_Mbox() PEAR-скрипт — загружает сообщение mbox из строки вместо файла

#php #email #pear #mbox

#php #Адрес электронной почты #груша #mbox #pear

Вопрос:

Это отлично работает, если я пытаюсь загрузить из файла, но я работаю с сообщениями в формате mbox, ранее сохраненными в таблице MySQL. Я загрузил сообщение в переменную $, и по какой-то причине оно не хочет его принимать. Есть идеи?

Пример кода:

 <?php
    // Reads a mbox file
    #$mbox = new Mail_Mbox('test.mbox');        // Works
    $mbox = new Mail_Mbox($data);               // Doesn't work (what the heck?!)
    $mbox->open();

    $message = $mbox->get(0);

    $decodedMessage = new Mail_mimeDecode($message, "rn");
    $structuredMessage = $decodedMessage->decode(
        array(
            'include_bodies'    =>  true,
            'decode_bodies'     =>  true
        )
    );
?>
  

Все работает, за исключением загрузки сообщения в этот скрипт из строки, в отличие от файла. Полностью запутался в этом.

Для справки: http://pear.php.net/package/Mail_Mbox

ПРИМЕР РЕШЕНИЯ, КОТОРОЕ РАБОТАЕТ:

 <?php
    // Setup a Stream_Var() to let us use a $variable like a file...so that Mail_Mbox() works
    stream_wrapper_register( "var", "Stream_Var" );

    // Reads a mbox file
    $mbox = new Mail_Mbox('var://GLOBALS/this-is-my-variable');   // Leave the $ off
    $mbox->open();

    $message = $mbox->get(0);

    $decodedMessage = new Mail_mimeDecode($message, "rn");
    $structuredMessage = $decodedMessage->decode(
        array(
            'include_bodies'    =>  true,
            'decode_bodies'     =>  true
        )
    );
?>
  

Ответ №1:

В документации говорится:

конструктор void Mail_Mbox::Mail_Mbox ( строка $file )

Класс не принимает строки, только файлы.

Возможно, вы захотите попробовать потоковую оболочку, такую как Stream_Var, чтобы сделать переменную доступной как файл. Возможно, это работает. Если этого не произойдет, откройте запрос функции в PEAR bugtracker.