codeigniter — сохранение вложения из части электронной почты с использованием переполнения стека

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

  1. Он анализирует обычные текстовые электронные письма (электронные письма в заданном формате) с помощью регулярных выражений, это прекрасно работает.
  2. Если электронное письмо имеет вложение типа 3 && кодировка = 3 && disposition = attachment затем сохраните вложение на локальный диск.

Моя проблема это шаг 2:

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

Если я пытаюсь просто использовать file_put_contents, я получаю Файл 0 КБ, Я дал полные разрешения пользователю сервера wamp, поэтому я не считать это права доступа к файлам, и я подтвердил, что могу писать с помощью mkdir.

file_put_contents(APPPATH . "attachments/". $partofpart->dparameters[0]->value, $partofpart); //$partofpart is part[2] of the full email structure

Поэтому я попытался декодировать часть и сохранить декодированную часть, используя файл file_put_contents

$attachment = base64_decode($partofpart);
var_dump($attachment);
//then save the attachment with attachment name
file_put_contents(APPPATH . "attachments/". $partofpart->dparameters[0]->value, $attachment);

но это возвращает ошибку, говорящую, что base64_decode требует строку, а не объект, как мне тогда преобразовать мое почтовое вложение в строку для использования base64_decode?

Даже просто записывая это, я чувствую, что упускаю что-то очевидное и не должно требовать дополнительных шагов.

Правильно ли я думаю, что часть ЯВЛЯЕТСЯ вложение? Все параметры заставляют меня поверить, что тип, подтип, размер и т. Д. Являются правильными для вложения.

Ссылка на весь скребковая модель

Спасибо за чтение и любую помощь.

Ниже приводится vardump частей, которые соответствуют проверкам типа / кодировки / расположения

Var дамп электронных писем, которые проходят проверки

Я решил проблему, я не извлекал реальный pdf обратно только его структуру

Поэтому я написал функцию для извлечения тела конкретного письма, затем использовал imap_base64 для кодирования и, наконец, file_put_contents.

function getAttachment($msg_index, $part)
{
$mailbody = imap_fetchbody($this->conn,$msg_index,$part);

return $mailbody;

}

$attachment = imap_base64($this->email_model->getAttachment($email['index'], "2"));

//mkdir(APPPATH . "attachmentzs/");

//then save the attachment with attachment name
file_put_contents(APPPATH . "attachments/".       $partofpart->dparameters[0]->value, $attachment);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]