У меня есть скрипт, который получает доступ к указанному письму и получает почту. $temp->getContent()
echos следующее.
----boundary_2710_edfb8b44-71c8-49ff-a8cb-88c83382c4ee Content-Type: multipart/alternative; boundary=--boundary_2709_dde0dd0e-ba35-4469-949d-5392aec65750 --boundary_2709_dde0dd0e-ba35-4469-949d-5392aec65750 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGZvcm0gbWV0aG9k.........this part is base64 encoded and it works fine if i copy and decode it separately.......AgICAgICAgICAgDQoNCjwvZm9ybT4= ----boundary_2709_dde0dd0e-ba35-4469-949d-5392aec65750-- ----boundary_2710_edfb8b44-71c8-49ff-a8cb-88c83382c4ee Content-Type: multipart/mixed; boundary=--boundary_2711_eca4cfc3-fc62-43d6-b9fb-e5295abbfbe8 ----boundary_2711_eca4cfc3-fc62-43d6-b9fb-e5295abbfbe8 Content-Type: application/pdf; name=redBusTicket.pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment Content-ID: JVBERi0xLjIgCiXi48/TIAoxIDAgb2JqIAo8PCAKL1R5cGUgL0NhdGFsb2cgCi9QYWdlcyAy IDAgUiAKL1BhZ2VNb2RlIC9Vc2VOb25lIAovVmlld2VyUHJlZ
Между этим контентом есть кодированная часть base64, и она отлично работает, если я копирую и декодирую ее отдельно. Также есть прикрепление по почте. Как я могу получить прикрепленный файл. Ниже приведен мой код. когда я использую base64_decode напрямую, я не получаю выход .. просто пустая страница ..
$storage = new Zend_Mail_Storage_Imap($imap); $temp = $storage->getMessage($_GET['mailid']); echo base64_decode($temp->getContent());
документация на сайте zend не очень хороша. Нужна помощь!!
У меня есть что-то вроде этого, чтобы получить содержимое base_64 из электронной почты. Попробуйте отфильтровать то, что вам не нужно.
if ($email->isMultipart() && $partsCount){ for($i = 1; $i < $email->countParts() +1; $i++) { $part = $email->getPart($i); $headers = $part->getHeaders(); if ( array_key_exists('content-description', $headers) || array_key_exists('content-disposition', $headers) ){ if (array_key_exists('content-description', $headers)) { $att = $part->getContent(); $filepath = utf8_encode(DATA_PATH . '/' . $part->getHeader('content-description')); if (is_file($filepath)) { unlink($filepath); // deletes previous files with same name } $file = fopen($filepath, "w"); fwrite($file, base64_decode($att)); fclose($file); $attachments[] = $filepath; } } } }
Это работает хорошо для меня:
foreach ($mail as $message) { $content = null; foreach (new RecursiveIteratorIterator($message) as $part) { if (strtok($part->contentType, ';') == 'text/plain') { $content = $part; break; } } if ($content) { echo "\n encode: " . $content->contentTransferEncoding; echo "\n date: " . $message->date; echo "\n subject: \n" . iconv_mime_decode($message->subject, 0, 'UTF-8'); echo "\n plain text part: \n" . mb_convert_encoding(base64_decode($content), 'UTF-8', 'KOI8-R'); } }