Jump to content

PHP Email Parse


davidjmorin

Recommended Posts

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.

Link to comment
https://forums.phpfreaks.com/topic/180169-php-email-parse/
Share on other sites

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.