davidjmorin Posted November 3, 2009 Share Posted November 3, 2009 hey all I have a script i need help with. the following appears to be checking my email but not moving the file to the images DIR. any ideas why? the layout is like this http://blackberrypinpal.com/net/photoblog/images/ <?php $cfg = array(); ######## CONFIG ####### $cfg['upload_dir'] = '../images'; //what directory to upload images to $cfg['mail_server'] = 'pop.secureserver.net'; //email server $cfg['mail_port'] = '110'; //email server port /* email server services as described on http://php.net/imap_open */ $cfg['mail_services'] = '/pop3'; $cfg['mail_username'] = '[email protected]'; //username for the email address to check $cfg['mail_password'] = '*********'; //password for above user $cfg['debug'] = false; //true or false for debugging /* Accepted File Types: if less than four characters, use a dot as the first char. */ $cfg['accepted'] = array('.3g2','.png','.jpg','.jpe','jpeg','.gif'); ######## END CONFIG ######### $pid=2; $type = array('text', 'multipart', 'message', 'application', 'audio', 'image', 'video', 'other'); $encoding = array('7bit', '8bit', 'binary', 'base64', 'quoted-printable', 'other'); if(!is_dir($cfg['upload_dir'])) { @mkdir($cfg['upload_dir']) or die('Cannot create directory: '.$cfg['upload_dir'].'! Make sure the parent folder has write permissions'); } // open POP connection $inbox = @imap_open ('{'.$cfg['mail_server'].':'.$cfg['mail_port'].$cfg['mail_services'].'}', $cfg['mail_username'], $cfg['mail_password']) or die('Connection to server failed.'); // parse message body function parse($structure) { global $type; global $encoding; // create an array to hold message sections $ret = array(); // split structure into parts $parts = $structure->parts; for($x=0; $x<sizeof($parts); $x++) { $ret[$x]['pid'] = ($x+1); $that = $parts[$x]; // default to text if ($that->type == '') { $that->type = 0; } $ret[$x]['type'] = $type[$that->type] . '/' . strtolower($that->subtype); // default to 7bit if ($that->encoding == '') { $that->encoding = 0; } $ret[$x]['encoding'] = $encoding[$that->encoding]; $ret[$x]['size'] = strtolower($that->bytes); $ret[$x]['disposition'] = strtolower($that->disposition); if ($that->ifparameters == 1) { $params = $that->parameters; foreach ($params as $p) { if($p->attribute == 'NAME') { $ret[$x]['name'] = $p->value; break; } } } } return $ret; } function get_attachments($arr) { for($x=0; $x < sizeof($arr); $x++) { if($arr[$x]['disposition'] == 'attachment') { $ret[] = $arr[$x]; } } return $ret; } $count = @imap_num_msg($inbox) or die('No Messages in mailbox!'); //echo 'count: ' . $count; // get message headers and structure for ($c = 1; $c <= $count; $c++) { $id = $c; $headers = imap_header($inbox, $id); $structure = imap_fetchstructure($inbox, $id); // if multipart, parse if(sizeof($structure->parts) > 1) { $sections = parse($structure); $attachments = get_attachments($sections); } if ($cfg['debug']) { echo 'Structure of message: ' . $id . '<BR><pre>'; print_r($structure); echo '</pre><BR>'; echo 'Sections of message: ' . $id . '<BR><pre>'; print_r($sections); echo '</pre><BR>'; } // look for specified part for($x=0; $x<sizeof($sections); $x++) { if($sections[$x]['pid'] == $pid) { $dtype = $sections[$x]['type']; $dencoding = $sections[$x]['encoding']; $filename = $sections[$x]['name']; } } if ($cfg['debug']) { echo ' type: ' . $dtype . '<BR>'; echo 'encoding: ' . $dencoding . '<BR>'; echo 'filename: ' . $filename . '<BR>'; echo ' id: ' . $id . '<BR><BR>'; } $attachment = imap_fetchbody($inbox, $id, $pid); if (!$cfg['debug']) { //if (in_array(substr($filename, -4), $cfg['accepted'])) { if ($dencoding == 'base64') { // Decode and save attachment to a file list($usec, $sec) = explode(' ', microtime()); $usec = substr($usec,2,3); $name = date('Ymd.His'); $fp=fopen($cfg['upload_dir'].'/'.$name.'_'.$filename,'w'); fwrite($fp,imap_base64($attachment)); fclose($fp); } //} } } if (!$cfg['debug']) { // delete all emails for ($i = 1; $i <= $count; $i++) { imap_delete($inbox, $i); } imap_expunge($inbox); } imap_close($inbox); if (!$cfg['debug']) { header('Location: '.$cfg['upload_dir']); } ?> any help is appreciated. Quote Link to comment https://forums.phpfreaks.com/topic/180169-php-email-parse/ Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.