Save Attachments Server with IMAP and PHP

前端 未结 1 1748
执笔经年
执笔经年 2021-02-03 16:22

Right now I am using this code to fetch emails from my server.



        
1条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-02-03 16:53

    I actually was able to get it to do exactly what I wanted with the following:

    from[0]->mailbox.'@'.$header->from[0]->host;
        $email[$m]['fromaddress'] = $header->from[0]->personal;
        $email[$m]['to'] = $header->to[0]->mailbox;
        $email[$m]['subject'] = $header->subject;
        $email[$m]['message_id'] = $header->message_id;
        $email[$m]['date'] = $header->udate;
    
        $from = $email[$m]['fromaddress'];
        $from_email = $email[$m]['from'];
        $to = $email[$m]['to'];
        $subject = $email[$m]['subject'];
    
        echo $from_email . '
    '; echo $to . '
    '; echo $subject . '
    '; $structure = imap_fetchstructure($imap, $m); $attachments = array(); if(isset($structure->parts) && count($structure->parts)) { for($i = 0; $i < count($structure->parts); $i++) { $attachments[$i] = array( 'is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => '' ); if($structure->parts[$i]->ifdparameters) { foreach($structure->parts[$i]->dparameters as $object) { if(strtolower($object->attribute) == 'filename') { $attachments[$i]['is_attachment'] = true; $attachments[$i]['filename'] = $object->value; } } } if($structure->parts[$i]->ifparameters) { foreach($structure->parts[$i]->parameters as $object) { if(strtolower($object->attribute) == 'name') { $attachments[$i]['is_attachment'] = true; $attachments[$i]['name'] = $object->value; } } } if($attachments[$i]['is_attachment']) { $attachments[$i]['attachment'] = imap_fetchbody($imap, $m, $i+1); if($structure->parts[$i]->encoding == 3) { // 3 = BASE64 $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']); } elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']); } } } } foreach ($attachments as $key => $attachment) { $name = $attachment['name']; $contents = $attachment['attachment']; file_put_contents($name, $contents); } //imap_setflag_full($imap, $i, "\\Seen"); //imap_mail_move($imap, $i, 'Trash'); } imap_close($imap); ?>

    0 讨论(0)
提交回复
热议问题