CopyPastor

Detecting plagiarism made easy.

Score: 0.8051877021789551; Reported for: String similarity Open both answers

Possible Plagiarism

Plagiarized on 2019-03-06
by Hemant Kumar

Original Post

Original - Posted on 2012-07-18
by Chali



            
Present in both answers; Present only in the new answer; Present only in the old answer;

Open IMAP stream to fetch emails from your `INBOX` and search emails with search criteria.
$inbox = imap_open('{imap.gmail.com:993/imap/ssl}INBOX', $username, $password) or die('Cannot connect: ' . imap_last_error()); $inboxmails = imap_search($inbox, 'SUBJECT "'.$subject.'" SINCE "'.$since_date.'" BEFORE "'.$before_date.'"', SE_UID);
You can extract multiple attachments with this code, It's working and fetch multiple attachments from single mail.
You have to open stream using imap_open() after that you can search messages using imap_search(). It returns you array of email number.
Suppose email number is 369.
$email = 369; $msgno = imap_msgno($inbox, $email); foreach($attachmentObj as $key => $val) { if($val['is_attachment']){ echo "\nFilename: ".$val['filename']."\n"; echo "Extension: ". pathinfo($val['filename'],PATHINFO_EXTENSION); //print_r($val);?> <img src="data:image/jpeg;base64,<?php echo base64_encode($val['attachment']);?>" width="200"> <?php } }
To fetch email attachments one have to fetch imap_fetchstructure and this will return a object where you can check if there is attachments available or not.

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; }

this is final working sample
<? include('application.php'); /* connect to gmail */ $hostname = '{imap.gmail.com:993/imap/ssl}INBOX'; $username = 'XX@XX.com'; $password = 'XX'; /* try to connect */ $inbox = imap_open($hostname,$username,$password) or die('Cannot connect to Gmail: ' . imap_last_error()); /* grab emails */ $emails = imap_search($inbox, 'FROM "xxx@gmail.com"'); /* if emails are returned, cycle through each... */ if($emails) { /* begin output var */ $output = ''; /* put the newest emails on top */ rsort($emails); foreach($emails as $email_number) { /* get information specific to this email */ $overview = imap_fetch_overview($inbox,$email_number,0); $message = imap_fetchbody($inbox,$email_number,2); $structure = imap_fetchstructure($inbox,$email_number); pre($overview); $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($inbox, $email_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)) if(count($attachments)!=0){ foreach($attachments as $at){ if($at['is_attachment']==1){ file_put_contents($at['filename'], $at['attachment']); } } } } // echo $output; } /* close the connection */ imap_close($inbox); ?>

        
Present in both answers; Present only in the new answer; Present only in the old answer;