imap读取退信邮件中的eml文件 通过smtp发邮件由于邮箱是错的或者是接受者设置了黑名单/邮箱已满等原因 导致退信我要通过imap读取如QQ邮箱经测试 我没有读取到附件中的eml文件 此邮件为发送的原邮件如何解决 附:163和sohu的都有类似问题发过一次这个帖子 尽然没有人回 悲哀啊这次加分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php/** * IMAP基本操作 */defined('IN_EDM') || exit('Access Denied');class ImapBase{ public $imapserver = ''; //IMAP服务器 public $username = ''; //用户名 public $password = ''; //密码 public $imap = null; //IMAP流 public $mailboxs = array(); //邮箱中的分类目录 /** * 初始化 */ function __construct($imapserver, $username, $password) { $this->imapserver = $imapserver; $this->username = $username; $this->password = $password; } /** * imap连接 */ function open_imap(){ $this->imap = imap_open('{'.$this->imapserver.':143/novalidate-cert}', "$this->username", "$this->password"); } /** * mailbox列表 */ function mailboxs_list(){ $mailboxs = imap_list($this->imap, '{'.$this->imapserver.':143/novalidate-cert}', "*"); if(is_array($mailboxs)){ foreach($mailboxs as $key=>$value){ if(stripos($value, 'novalidate-cert') !== false){ $tmparr = explode('}', $value); $mailboxs[$key] = trim($tmparr[1]); } } } $this->mailboxs = $mailboxs; } function close_imap(){ imap_close($this->imap); } /** * 打开mailbox */ function open_mailbox($mailbox){ return imap_open('{'.$this->imapserver.':143/novalidate-cert}'.$mailbox, "$this->username", "$this->password"); } /** * maibox中的邮件数 */ function mailnum($mailbox){ return imap_num_msg($mailbox); } /** * 获取邮件内容 */ function get_mail(){ //连接IMAP $this->open_imap(); //获取mailbox $this->mailboxs_list(); //连接mailboxs if($this->mailboxs && is_array($this->mailboxs)){ foreach($this->mailboxs as $value){ $mailbox = $this->open_mailbox($value); $mailnum = $this->mailnum($mailbox); if($mailnum > 0){ for($i=1; $i<=$mailnum; $i++){ $body = array(); $body[] = imap_fetchbody($mailbox, $i, 0); $body[] = imap_fetchbody($mailbox, $i, 1); $body[] = imap_fetchbody($mailbox, $i, 2); $body[] = imap_fetchbody($mailbox, $i, 3); $body[] = imap_fetchbody($mailbox, $i, 4); test($body); $structure = imap_fetchstructure($mailbox, $i); test($structure); $parts = $structure->parts; for($j = 1; $j < count($parts); $j++){ $part = $parts[$i]; test($part, false); } } } } } //关闭IMAP $this->close_imap(); }} 删除操作还没有测试的 目前是读不到附件中eml格式的文件内容 如何获取登录后跳转的网址,有点难度!! 求助:WampServer2.0如何连接MSSQL 怎样给静态网页加个注册登录页面 linux discuz 服务器不支持mysql 不通过提交使得php获得html元素value值! 本人初学php,请前辈告诉我如何配置php运行环境.. 求php isbn正则表达式。 sql语句 的问题,达人请出手 下列正则表达式! swfupload 棘手问题 在线等 loadHTMLFile不支持innerHTML吗? 用PHP建sql表的问题
/**
* IMAP基本操作
*/
defined('IN_EDM') || exit('Access Denied');
class ImapBase{ public $imapserver = ''; //IMAP服务器
public $username = ''; //用户名
public $password = ''; //密码
public $imap = null; //IMAP流
public $mailboxs = array(); //邮箱中的分类目录 /**
* 初始化
*/
function __construct($imapserver, $username, $password) {
$this->imapserver = $imapserver;
$this->username = $username;
$this->password = $password; } /**
* imap连接
*/
function open_imap(){
$this->imap = imap_open('{'.$this->imapserver.':143/novalidate-cert}', "$this->username", "$this->password");
} /**
* mailbox列表
*/
function mailboxs_list(){ $mailboxs = imap_list($this->imap, '{'.$this->imapserver.':143/novalidate-cert}', "*"); if(is_array($mailboxs)){
foreach($mailboxs as $key=>$value){ if(stripos($value, 'novalidate-cert') !== false){
$tmparr = explode('}', $value);
$mailboxs[$key] = trim($tmparr[1]);
}
}
} $this->mailboxs = $mailboxs;
} function close_imap(){ imap_close($this->imap);
} /**
* 打开mailbox
*/
function open_mailbox($mailbox){ return imap_open('{'.$this->imapserver.':143/novalidate-cert}'.$mailbox, "$this->username", "$this->password");
} /**
* maibox中的邮件数
*/
function mailnum($mailbox){ return imap_num_msg($mailbox);
} /**
* 获取邮件内容
*/
function get_mail(){ //连接IMAP
$this->open_imap(); //获取mailbox
$this->mailboxs_list(); //连接mailboxs
if($this->mailboxs && is_array($this->mailboxs)){ foreach($this->mailboxs as $value){ $mailbox = $this->open_mailbox($value); $mailnum = $this->mailnum($mailbox); if($mailnum > 0){ for($i=1; $i<=$mailnum; $i++){
$body = array(); $body[] = imap_fetchbody($mailbox, $i, 0);
$body[] = imap_fetchbody($mailbox, $i, 1);
$body[] = imap_fetchbody($mailbox, $i, 2);
$body[] = imap_fetchbody($mailbox, $i, 3);
$body[] = imap_fetchbody($mailbox, $i, 4); test($body);
$structure = imap_fetchstructure($mailbox, $i); test($structure); $parts = $structure->parts; for($j = 1; $j < count($parts); $j++){ $part = $parts[$i]; test($part, false); }
}
}
}
} //关闭IMAP
$this->close_imap();
}
}