快速业务通道

用PHP实现POP3邮件的解码(三)

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
left_tag_pos+1,$mail_lenth);
if (trim($this->from_name)=="") $this->from_name=$this->from_mail;
else
if (ereg("[\"|\'']([^\''\"]+)[\''|\"]",$this->from_name,$reg))
$this->from_name=$reg[1];
}
else
{
$this->from_name=$content;
$this->from_mail=$content;
//没有发件人的邮件地址
}
break;
case "TO": //收件人地址及姓名(可能 没有姓名)
if ($left_tag_pos=strpos($content,"<"))
{
$mail_lenth=strrpos($content,">")-$left_tag_pos-1;
$this->to_name=substr($content,0,$left_tag_pos);
$this->to_mail=substr($content,$left_tag_pos+1,$mail_lenth);
if (trim($this->to_name)=="") $this->to_name=$this->to_mail;
else
if (ereg("[\"|\'']([^\''\"]+)[\''|\"]",$this->to_name,$reg))
$this->to_name=$reg[1];
}
else
{
$this->to_name=$content;
$this->to_mail=$content;
//没有分开收件人的邮件地址
}
break;
case "DATE" : //发送日期,为了处理方便,这里返回的是一个 Unix 时间戳,可以用 date("Y-m-d",$this->mail_time) 来得到一般格式的日期
$content=trim($content);
$day=strtok($content," ");
$day=substr($day,0,strlen($day)-1);
$date=strtok(" ");
$month=$this->month_num[strtok(" ")];
$year=strtok(" ");
$time=strtok(" ");
$time=split(":",$time);
$this->mail_time=mktime($time[0],$time[1],$time[2],$month,$date,$year);
break;
case "SUBJECT":  //邮件主题
$this->subject=$content;
break;
case "REPLY_TO": // 回复地址(可能没有)
if (ereg("<([^>]+)>",$content,$reg))
$this->reply_to=$reg[1];
else $this->reply_to=$content;
break;
case "CONTENT-TYPE": // 整个邮件的 Content类型, eregi("([^;]*);",$content,$reg);
$this->body_type=trim($reg[1]);
if (eregi("multipart",$content)) // 如果是 multipart 类型,取得 分隔符
{
while (!eregi(''boundary=\"(.*)\"'',$head[$i],$reg) and $head[$i])
$i++;
$this->boundary=$reg[1];
}
else //对于一般的正文类型,直接取得其编码方法
{
while (!eregi("charset=[\"|\''](.*)[\''|\"]",$head[$i],$reg))
$i++;
$this->body_char_set=$reg[1];
while (!eregi("Content-Transfer-Encoding:(.*)",$head[$i],$reg))
$i++;
$this->body_code_type=trim($reg[1]);
}
break;
case "CC": //抄送到。。
if (ereg("<([^>]+)>",$content,$reg))
$this->cc_to=$reg[1];
else
$this->cc_to=$content;
default:
break;
} // end switch

$i++;
} // end while

if (trim($this->reply_to)=="")  //如果没有指定回复地址,则回复地址为发送人地址
$this->reply_to=$this->from_mail;
}// end function define
function decode_body() //正文的解码,其中用到了不少邮件头解码所得来的信息
{
$i=0;
if (!eregi("multipart",$this->body_type)) // 如果不是复合类型,可以直接解码
{
$tem_body=implode($this->body_temp,"\r\n");
switch (strtolower($this->body_code_type)) // body_code_type ,正文的编码方式,由邮

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号