Zend_Mail attachment

D
На сайте с 14.01.2007
Offline
153
624

блин, бывают моменты, когда долго что-то не получается и тогда бедный комп в опастности.

не дайте ему погибнуть :)

Задача: забрать мыло из ящика и спарсить аттачмент. делов то..

чтобы не мучаться, решил использовать 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" .....

т.е. "части" есть

Где здесь может быть ошибка?

вот пример:

01

// Connecting with Imap
02
$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);
}
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий