设为首页 收藏本站
查看: 919|回复: 0

[经验分享] php接收邮件类

[复制链接]

尚未签到

发表于 2017-3-27 08:33:25 | 显示全部楼层 |阅读模式
  receivemail是一个专门用来接收邮件的PHP类,支持POP3和IMAP等邮件协议。可以接收邮件及邮件附件。
  中文乱码解决

/**
* decode the subject of chinese
*
* @param string $subject
* @return sting
*/
public function subjectDecode($subject) {
$beginStr = substr($subject, 0, 5);
if($beginStr == '=?ISO') {
$separator = '=?ISO-2022-JP';
$toEncoding = 'ISO-2022-JP';
} else  {
$separator = '=?GB2312';
$toEncoding = 'GB2312';
}
$encode = strstr($subject, $separator);
if ($encode) {
$explodeArr = explode($separator, $subject);
$length = count($explodeArr);
$subjectArr = array();
for($i = 0; $i < $length / 2; $i++) {
$subjectArr[$i][] = $explodeArr[$i * 2];
if (@$explodeArr[$i * 2 + 1]) {
$subjectArr[$i][] = $explodeArr[$i * 2 + 1];
}
}
foreach ($subjectArr as $arr) {
$subSubject = implode($separator, $arr);
if (count($arr) == 1) {
$subSubject = $separator . $subSubject;
}
$begin = strpos($subSubject, "=?");
$end = strpos($subSubject, "?=");
$beginStr = '';
$endStr = '';
if ($end > 0) {
if ($begin > 0) {
$beginStr = substr($subSubject, 0, $begin);
}
if ((strlen($subSubject) - $end) > 2) {
$endStr = substr($subSubject, $end + 2, strlen($subSubject) - $end - 2);
}
$str = substr($subSubject, 0, $end - strlen($subSubject));
$pos = strrpos($str, "?");
$str = substr($str, $pos + 1, strlen($str) - $pos);
$subSubject = $beginStr . imap_base64($str) . $endStr;
$subSubjectArr[] = iconv ( $toEncoding, 'utf-8', $subSubject );
// mb_convert_encoding($subSubject, 'utf-8' ,'gb2312,ISO-2022-JP');
}
}
$subject = implode('', $subSubjectArr);
}
return $subject;
}
  if(strtolower($sender->mailbox)!='mailer-daemon' && strtolower($sender->mailbox)!='postmaster')

{ $subject = $this->subjectDecode($mail_header->subject);
  使用方法如下:

<?php
include("receivemail.class.php");
// 创建一个 reciveMail 对象
$obj = new receiveMail('469671292@163.com','*','469671292@163.com','pop.163.com','pop3','110',false);
// 连接到邮件服务器
$obj->connect();         //If connection fails give error message and exit
// 读取全部信件
$tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value
echo "收到$tot封邮件::<br>";
for($i = $tot; $i > 0; $i--)
{
$head = $obj->getHeaders($i);  // 读取获取邮件头信息,返回数组 **数组键值为 (subject,to,toOth,toNameOth,from,fromName)
echo "主题 :: ".$head['subject']."<br>";
echo "收件人 :: ".$head['to']."<br>";
echo "抄送 :: ".$head['toOth']."<br>";
echo "发件人 :: ".$head['from']."<br>";
echo "发件人名称 :: ".$head['fromName']."<br>";
echo "<br><br>";
echo "<br>*******************************************************************************************<br>";
echo $obj->getBody($i);  // 邮件正文
$str = $obj->GetAttach($i,"./"); // 获取邮件附件,返回的文件名以逗号隔开。 例如. (mailid, Path to store file)
$ar = explode(",",$str);
foreach($ar as $key=>$value)
echo ($value == "") ? "" : "Atteched File :: " . $value . "<br>";
echo "<br>------------------------------------------------------------------------------------------<br>";
//$obj->deleteMails($i); // Delete Mail from Mail box
}
$obj->close_mailbox();   //Close Mail Box
?>
   receivemail.class.php需要imap模块支持。


<?php
$imap = imap_open("{localhost}mbox-bak","graeme","inferno");
// get recent messages
$number = imap_num_recent($imap);
echo "Number of recent messages: $number<BR>\n";
// display subjects of messages
for ($i=1; $i<=$number; $i++) {
$header = imap_header($imap, $i);
echo "Subject: ", $header->Subject, "<BR>\n";
}
imap_close($imap);
?>
  imap_append :     附加字符串到指定的邮箱中。

imap_base64 :     解 base64 编码。

imap_body :     读信的内文。

imap_check :     返回邮箱信息。

imap_close :     关闭 imap 链接。

imap_createmailbox :     建立新的信箱。

imap_delete :     标记欲删除邮件。

imap_deletemailbox :     删除既有信箱。

imap_expunge :     删除已标记的邮件。

imap_fetchbody :     从信件内文取出指定部分。

imap_fetchstructure :     获取某信件的结构信息。

imap_header :     获取某信件的标头信息。
imap_headers :     获取全部信件的标头信息。

imap_listmailbox :     获取邮箱列示。


imap_listsubscribed :     获取订阅邮箱列示。

imap_mail_copy :     复制指定信件到它处邮箱。

imap_mail_move :     移动指定信件到它处邮箱。
imap_num_msg :     取得信件数。

imap_num_recent :     取得新进信件数。



imap_open :     打开 imap 链接。

imap_ping :     检查 imap 是否连接。

imap_renamemailbox :     更改邮箱名字。

imap_reopen :     重开 imap 链接。

imap_subscribe :     订阅邮箱。

imap_undelete :     取消删除邮件标记。

imap_unsubscribe :     取消订阅邮箱。

imap_qprint :     将 qp 编码转成八位。

imap_8bit :     将八位转成 qp 编码。

imap_binary :     将八位转成 base64 编码。

imap_scanmailbox :     寻找信件有无特定字符串。

imap_mailboxmsginfo :     取得目前邮箱的信息。

imap_rfc822_write_address :     电子邮件位址标准化。

imap_rfc822_parse_adrlist :     解析电子邮件位址。

imap_setflag_full :     配置信件标志。

imap_clearflag_full :     清除信件标志。

imap_sort :     将信件标头排序。

imap_fetchheader :     取得原始标头。

imap_uid :     取得信件 uid。

imap_getmailboxes :     取得全部信件详细信息。

imap_getsubscribed :     列出所有订阅邮箱。

imap_msgno :     列出 uid 的连续信件。

imap_search :     搜寻指定标准的信件。

imap_last_error :     最后的错误信息。

imap_errors :     所有的错误信息。

imap_alerts :     所有的警告信息。

imap_status :     目前的状态信息。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355858-1-1.html 上篇帖子: PHP伪静态分页 下篇帖子: PHP XML操作类DOMDocument
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表