文字

简介

这些函数提供了可以操作 IMAP 以及 NNTPPOP3 和本地邮箱的方法。

注意,有些 IMAP 函数在 POP3 协议下将不能正常的工作。

用户评论:

[#1] Wil Barath [2010-02-25 19:58:30]

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($attachmentsmail_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);
}
?>

上一篇: 下一篇: