|
Posted by Jim Plush on 10/16/55 11:10
here is a script I use to get jpg attachments with IMAP.. good luck
<?php
//------+-- -------------------+------ -- -
# view the contents of an array in html format
#--- -+ -
// return the email account of the user so we can assign it to a user
account
function get_phone_address($i)
{
global $mbox;
$header=imap_header($mbox,$i);
echo 'FROM: '.$header->from[0]->mailbox."@".$header->from[0]->host.'<BR>';
return $header->from[0]->mailbox."@".$header->from[0]->host;
}
function get_structure($mbox,$i)
{
$structure = imap_fetchstructure($mbox, $i);
return $structure;
}
function no_attachments($structure)
{
global $mbox;
$attach = sizeof($structure->parts); //# OF ATTACHMENTS
echo '<BR><BR>'.$attach.' attachments <BR>';
return $attach;
}
function get_attached_file($structure, $username, $k,$i)
{
global $mbox;
$encoding = $structure->parts[$k]->encoding;
$Name = strtolower($structure->parts[$k]->dparameters[0]->value);
//$NewFile[$k-1] = $Name;
echo $Name.'<BR>';
if(strstr($Name, '.jpg') && !strstr($Name, 'masthead.jpg'))
{
echo 'In File Loop<BR>';
$File = base64_decode(imap_fetchbody($mbox, $i, $k+1));
$fp = fopen("C:/TEMP/".$username.$Name ,"w+");
fwrite ($fp, $File, 100000000);
fclose($fp);
}
return $Name;
}
/*
****************************************************************************
**********************************
****************************************************************************
**********************************
*/
// CONNECT TO IMAP SERVER
$mbox = imap_open("{mail.myserver.net:143}INBOX", "USERNAME", "PASSWORD");
if($mbox)
{
echo 'CONNECTED TO INBOX...<BR>';
}
$error = imap_errors();
$alerts = imap_alerts();
/*
****************************************************************************
**********************************
****************************************************************************
**********************************
*/
$msg_cnt = imap_num_msg($mbox);
htm($msg_cnt);
for($msg_num=1; $msg_num<=$msg_cnt; $msg_num++)
{
$structure = get_structure($mbox, $msg_num);
$num_attach = no_attachments($structure);
$phone_address = get_phone_address($msg_num);
//get_attached_file($structure,1,1);
for($i=0; $i<$num_attach; $i++)
{
get_attached_file($structure, 'jim_', $i, $msg_num);
}
}
imap_close($mbox);
print_r($error);
print_r($alerts);
?>
"Evert | Rooftop Solutions" <evert@rooftopsolutions.nl> wrote in message
news:4230B04B.9060100@rooftopsolutions.nl...
> Hi,
>
> I started using the IMAP functions and ran into a problem with some
> headers for attachments.
>
> The first one is:
>
> Content-type: image/psd; x-unix-mode=0644; name=FinalVersion6.psd
> Content-transfer-encoding: base64
> Content-disposition: inline; filename=FinalVersion6.psd
>
> Generated by Mac Mail. The filename wont show up in the result of for
example imap_fetchstructure.
>
> The second is:
>
> Content-Type: text/plain
> Content-Disposition: attachment;
> filename="Video(019).3gp"
> Content-Transfer-Encoding: base64
>
> I suspect this one has something to do with the linebreak. It's generated
by a modern nokia (7650 I think)
>
>
> I additionaly found a problem calling imap_fetchbody with a non-existent
msg number. This will result in a segfault.
>
> grt,
> Evert
>
[Back to original message]
|