Jump to content

Function to extract email attachments using PHP IMAP


bhavya

Recommended Posts

function extract_attachments($connection, $message_number) {

 

    $attachments = array();

    $structure = imap_fetchstructure($connection, $message_number);

 

    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']);

                }

            }

         

        }

     

    }

 

    return $attachments;

 

}

 

can anyone please explain this code.

To be blunt, Not really, if we did you probably wouldnt understand it.

 

I would suggest reading tutorials on using IMAP with attachments, if it's too advanced then you need to start on some smaller tutorials that focus on the components.

 

Like writing functions, using Classes and Objects, and the various functions in there like base64_decode() can be understood by reading through the php manual.

 

-CB-

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.