downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

Installation/Configuration> <IMAP
[edit] Last updated: Fri, 17 May 2013

view this page in

Introduction

Ces fonctions vous permettent d'utiliser le protocole IMAP, mais aussi les protocoles NNTP, POP3 et les boƮtes aux lettres locales.

Cependant, soyez prudent, car quelques fonctions IMAP ne fonctionnent pas correctement avec le protocole POP.



add a note add a note User Contributed Notes Introduction - [1 notes]
up
1
Wil Barath
3 years ago
For all the people coming here praying for:

1) a dead-easy way to read MIME attachments, or
2) a dead-easy way to access POP3 folders

Look no further.

<?php
function pop3_login($host,$port,$user,$pass,$folder="INBOX",$ssl=false)
{
   
$ssl=($ssl==false)?"/novalidate-cert":"";
    return (
imap_open("{"."$host:$port/pop3$ssl"."}$folder",$user,$pass));
}
function
pop3_stat($connection)       
{
   
$check = imap_mailboxmsginfo($imap);
    return ((array)
$check);
}
function
pop3_list($connection,$message="")
{
    if (
$message)
    {
       
$range=$message;
    } else {
       
$MC = imap_check($mbox);
       
$range = "1:".$MC->Nmsgs;
    }
   
$response = imap_fetch_overview($mbox,$range);
    foreach (
$response as $msg) $result[$msg->msgno]=(array)$msg;
}
function
pop3_retr($connection,$message)
{
    return(
imap_fetchheader($connection,$message,FT_PREFETCHTEXT));
}
function
pop3_dele($connection,$message)
{
    return(
imap_delete($connection,$message));
}
function
mail_parse_headers($headers)
{
   
$headers=preg_replace('/\r\n\s+/m', '',$headers);
   
preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)?\r\n/m', $headers, $matches);
    foreach (
$matches[1] as $key =>$value) $result[$value]=$matches[2][$key];
    return(
$result);
}
function
mail_mime_to_array($imap,$mid,$parse_headers=false)
{
   
$mail = imap_fetchstructure($imap,$mid);
   
$mail = mail_get_parts($imap,$mid,$mail,0);
    if (
$parse_headers) $mail[0]["parsed"]=mail_parse_headers($mail[0]["data"]);
    return(
$mail);
}
function
mail_get_parts($imap,$mid,$part,$prefix)
{   
   
$attachments=array();
   
$attachments[$prefix]=mail_decode_part($imap,$mid,$part,$prefix);
    if (isset(
$part->parts)) // multipart
   
{
       
$prefix = ($prefix == "0")?"":"$prefix.";
        foreach (
$part->parts as $number=>$subpart)
           
$attachments=array_merge($attachments, mail_get_parts($imap,$mid,$subpart,$prefix.($number+1)));
    }
    return
$attachments;
}
function
mail_decode_part($connection,$message_number,$part,$prefix)
{
   
$attachment = array();

    if(
$part->ifdparameters) {
        foreach(
$part->dparameters as $object) {
           
$attachment[strtolower($object->attribute)]=$object->value;
            if(
strtolower($object->attribute) == 'filename') {
               
$attachment['is_attachment'] = true;
               
$attachment['filename'] = $object->value;
            }
        }
    }

    if(
$part->ifparameters) {
        foreach(
$part->parameters as $object) {
           
$attachment[strtolower($object->attribute)]=$object->value;
            if(
strtolower($object->attribute) == 'name') {
               
$attachment['is_attachment'] = true;
               
$attachment['name'] = $object->value;
            }
        }
    }

   
$attachment['data'] = imap_fetchbody($connection, $message_number, $prefix);
    if(
$part->encoding == 3) { // 3 = BASE64
       
$attachment['data'] = base64_decode($attachment['data']);
    }
    elseif(
$part->encoding == 4) { // 4 = QUOTED-PRINTABLE
       
$attachment['data'] = quoted_printable_decode($attachment['data']);
    }
    return(
$attachment);
}
?>

 
show source | credits | stats | sitemap | contact | advertising | mirror sites