Downloading attachments to directory with IMAP in PHP, randomly works

后端 未结 4 368
暖寄归人
暖寄归人 2020-11-30 01:58

I found PHP code online to download attachments to a directory using IMAP from here. http://www.nerdydork.com/download-pop3imap-email-attachments-with-php.html

I mod

4条回答
  •  北海茫月
    2020-11-30 02:34

    Check out this code:

               $structure = imap_fetchstructure($mailbox, $index);
    
           $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($connection, $message_number, $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']);
                 }
               }             
             } // for($i = 0; $i < count($structure->parts); $i++)
           } // if(isset($structure->parts) && count($structure->parts))
    

提交回复
热议问题