@joger

Zend_Mail attachment

Добрый вечер,
бывают моменты, когда долго что-то не получается и тогда бедный комп в опастности.
не дайте ему погибнуть :)
Задача: забрать мыло из ящика и спарсить аттачмент. делов то…
чтобы не мучаться, решил использовать Zend_Mail.
Подсоединяюсь к серваку
Забираю мыло
Во всех примерах проверяют на is_multipart и забирают 2. часть.
У меня проверка на мултипарт проходит, вот только при попытке забрать 2. частъ получаем в лоб «такой части нет»(при переборе оказалось, что там никаких частей нету)
Если вывести на экран содержание мыла, то получаем что-то вроде:
Mail von ...': bla multipart/mixed; boundary="------------080707010901070105060904"
This is a multi-part message in MIME format. ------=_NextPart_000_0060_01CBD118.8803ECD0 Content-Type: text/plain; format=flowed; charset="iso-8859-1" Content-Transfer-Encoding: 8bit bla -- ....... ------=_NextPart_000_0060_01CBD118.8803ECD0 Content-Type: text/plain; name="reports.txt" Content-Transfer-Encoding: 8bit Content-Disposition: attachment; filename="reports.txt" .....

т.е. «части» есть

Где здесь может быть ошибка?
вот пример:
// Connecting with Imap
$mail = new Zend_Mail_Storage_Imap(
array('host' => 'SERVER',
'user' => 'USERNAME',
'password' => 'PASSWORD'));

// Navigate to desired folder
$folder = $mail->getFolders()->INBOX->Info;

// Change to folder
$mail->selectFolder($folder);

// Loop through messages

foreach ($mail as $message)
{

// Find desired message subject

if($message->subject == 'SUBJECT')
{
// Check for attachment
if($message->isMultipart())
{
$part = $message->getPart(2);
}

// Get the attacment file name
$fileName = $part->getHeader('content-description');

// Get the attachement and decode
$attachment = base64_decode($part->getContent());

// Save the attachment
$fh = fopen($fileName, 'w');

fwrite($fh, $attachment);

fclose($fh);
}
}
  • Вопрос задан
  • 2773 просмотра
Пригласить эксперта
Ответы на вопрос 2
taliban
@taliban
php программист
Если никто не подскажет, я б посоветовал бы продебажить =) Дебажить зенд — увлекательно езанятие :)
Ответ написан
AlexeyK
@AlexeyK
В официальном мануале используется $message = getPart(1); и объясняется как вытягивать такое сообщение, попробуйте как они говорят, и если не получится — спросите почему :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы