Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > приём email с аттачем


Автор: Quadri 10.2.2006, 11:03
всем ку

Вобщем задача принять письмецо с приаттченым файлом и записать в папку.
использую imap_fetchstructure() и imap_fetchbody() но не въеду как там эти body part'ы использовать. дока какая то не просвятляющая по этому вопросу.
Ткните кто знает хотя бы как эти body part выцепить и чё это такое и с чем это есть
Вообще горю помогите плиз

Спасибо

Автор: Mal Hack 10.2.2006, 12:59
Глянь вот эту тему: http://forum.vingrad.ru/index.php?showtopic=39474&unread=1&hl=imap_fetchbody

Автор: Quadri 11.2.2006, 18:48
Всё. Разобрался.

Ниже демо-скрипт который пробегается по письмам в ящике и всё атачи сохраняет рядышком с родными именами.
Мож кому пригодится...

Код

$pop_server='pop.mail.ru';   // pop3 domain
$port=110;                            // pop3 port (110 - default value)
$username='name';              // pop3 username
$password='pass';               // pop3 password

function get_attach_info_array($box, $mnum) {
$k=0;
$mstruct=imap_fetchstructure($box, $mnum);
for($j=0;$j<=count($mstruct->parts);$j++)
{
  if (strtoupper($mstruct->parts[$j]->disposition)=='ATTACHMENT' || strtoupper($mstruct->parts[$j]->disposition)=='INLINE')  // INLINE - специально для Thunderbird
  {
     $attachments[$k]['name']=$mstruct->parts[$j]->dparameters[0]->value;
     $attachments[$k]['part']=$j+1;
     $attachments[$k]['encoding']=$mstruct->parts[$j]->encoding;
     $attachments[$k]['type']=$mstruct->parts[$j]->type;
     $k++;
  }
}
return $attachments;
}

$login_str='{'.$pop_server.':'.$port.'/pop3}INBOX';
$box=imap_open($login_str, $username, $password);
$box_info=imap_mailboxmsginfo($box);

for($i=1;$i<=$box_info->Nmsgs;$i++)
{
$attachments = get_attach_info_array($box,$i);
if($attachments)
{
  for($j=0;$j<count($attachments);$j++) {
       $mbody=imap_base64(imap_fetchbody($box, $i, $attachments[$j]['part']));
     $fp=fopen($attachments[$j]['name'], 'w+');
     fwrite($fp, $mbody, strlen($mbody));
     fclose($fp);
  }
}
}
imap_close($box);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)