php接收邮件类

简介:

receivemail是一个专门用来接收邮件的PHP类,支持POP3和IMAP等邮件协议。可以接收邮件及邮件附件。

中文乱码解决

Java代码   收藏代码
  1. /** 
  2.  * decode the subject of chinese 
  3.  * 
  4.  * @param string $subject 
  5.  * @return sting 
  6.  */  
  7. public function subjectDecode($subject) {  
  8.     $beginStr = substr($subject, 05);  
  9.     if($beginStr == '=?ISO') {  
  10.         $separator = '=?ISO-2022-JP';  
  11.         $toEncoding = 'ISO-2022-JP';  
  12.     } else  {  
  13.         $separator = '=?GB2312';  
  14.         $toEncoding = 'GB2312';  
  15.     }  
  16.     $encode = strstr($subject, $separator);  
  17.     if ($encode) {  
  18.         $explodeArr = explode($separator, $subject);  
  19.         $length = count($explodeArr);  
  20.         $subjectArr = array();  
  21.         for($i = 0; $i < $length / 2; $i++) {  
  22.             $subjectArr[$i][] = $explodeArr[$i * 2];  
  23.             if (@$explodeArr[$i * 2 + 1]) {  
  24.                 $subjectArr[$i][] = $explodeArr[$i * 2 + 1];  
  25.             }  
  26.         }  
  27.         foreach ($subjectArr as $arr) {  
  28.             $subSubject = implode($separator, $arr);  
  29.             if (count($arr) == 1) {  
  30.                 $subSubject = $separator . $subSubject;  
  31.             }  
  32.             $begin = strpos($subSubject, "=?");  
  33.             $end = strpos($subSubject, "?=");  
  34.             $beginStr = '';  
  35.             $endStr = '';  
  36.             if ($end > 0) {  
  37.                 if ($begin > 0) {  
  38.                     $beginStr = substr($subSubject, 0, $begin);  
  39.                 }  
  40.                 if ((strlen($subSubject) - $end) > 2) {  
  41.                     $endStr = substr($subSubject, $end + 2, strlen($subSubject) - $end - 2);  
  42.                 }  
  43.                 $str = substr($subSubject, 0, $end - strlen($subSubject));  
  44.                 $pos = strrpos($str, "?");  
  45.                 $str = substr($str, $pos + 1, strlen($str) - $pos);  
  46.                 $subSubject = $beginStr . imap_base64($str) . $endStr;  
  47.                 $subSubjectArr[] = iconv ( $toEncoding, 'utf-8', $subSubject );  
  48.                 // mb_convert_encoding($subSubject, 'utf-8' ,'gb2312,ISO-2022-JP');  
  49.             }  
  50.         }  
  51.         $subject = implode('', $subSubjectArr);  
  52.     }  
  53.     return $subject;  
  54. }   

if(strtolower($sender->mailbox)!='mailer-daemon' && strtolower($sender->mailbox)!='postmaster')
{ $subject = $this->subjectDecode($mail_header->subject);

使用方法如下:

Java代码   收藏代码
  1. <?php  
  2. include("receivemail.class.php");  
  3. // 创建一个 reciveMail 对象  
  4. $obj = new receiveMail('469671292@163.com','*','469671292@163.com','pop.163.com','pop3','110',false);  
  5. // 连接到邮件服务器  
  6. $obj->connect();         //If connection fails give error message and exit  
  7. // 读取全部信件  
  8. $tot = $obj->getTotalMails(); //Total Mails in Inbox Return integer value  
  9.   
  10. echo "收到$tot封邮件::<br>";  
  11. for($i = $tot; $i > 0; $i--)  
  12. {  
  13.     $head = $obj->getHeaders($i);  // 读取获取邮件头信息,返回数组 **数组键值为 (subject,to,toOth,toNameOth,from,fromName)  
  14.     echo "主题 :: ".$head['subject']."<br>";  
  15.     echo "收件人 :: ".$head['to']."<br>";  
  16.     echo "抄送 :: ".$head['toOth']."<br>";  
  17.     echo "发件人 :: ".$head['from']."<br>";  
  18.     echo "发件人名称 :: ".$head['fromName']."<br>";  
  19.     echo "<br><br>";  
  20.     echo "<br>*******************************************************************************************<br>";  
  21.     echo $obj->getBody($i);  // 邮件正文  
  22.     $str = $obj->GetAttach($i,"./"); // 获取邮件附件,返回的文件名以逗号隔开。 例如. (mailid, Path to store file)  
  23.     $ar = explode(",",$str);  
  24.     foreach($ar as $key=>$value)  
  25.         echo ($value == "") ? "" : "Atteched File :: " . $value . "<br>";  
  26.     echo "<br>------------------------------------------------------------------------------------------<br>";  
  27.     //$obj->deleteMails($i); // Delete Mail from Mail box  
  28. }  
  29. $obj->close_mailbox();   //Close Mail Box  
  30. ?>  

 receivemail.class.php需要imap模块支持。

Java代码   收藏代码
  1. <?php  
  2. $imap = imap_open("{localhost}mbox-bak","graeme","inferno");  
  3.   
  4. // get recent messages  
  5. $number = imap_num_recent($imap);  
  6.   
  7. echo "Number of recent messages: $number<BR>\n";  
  8. // display subjects of messages  
  9. for ($i=1; $i<=$number; $i++) {  
  10.    $header = imap_header($imap, $i);  
  11.    echo "Subject: ", $header->Subject, "<BR>\n";  
  12.   
  13. }  
  14. imap_close($imap);  
  15. ?>  

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 :     目前的状态信息。

相关文章
|
Java 程序员 PHP
PHP对象和类
PHP对象和类
139 0
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
PHP
PHP中的面向对象编程:理解类与对象
本文将深入探讨PHP中面向对象编程的核心概念——类与对象。通过实例讲解,帮助读者更好地理解如何在PHP中运用OOP编写更高效、可维护的代码。
168 9
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
217 2
|
PHP 开发者
PHP中的面向对象编程:掌握类与对象的精髓
探索PHP的面向对象编程世界,本文将带你了解如何通过创建和操作类来实例化对象。我们将深入讲解类的声明、构造函数的使用以及继承和多态性的概念。准备好,让我们一起在代码的海洋中航行,揭开PHP对象编程的神秘面纱!
|
PHP
如何在PHP中创建一个自定义的观察者类?
【7月更文挑战第2天】如何在PHP中创建一个自定义的观察者类?
122 0
|
PHP
PHP中,你可以使用class关键字来定义一个类
【7月更文挑战第2天】PHP中,你可以使用class关键字来定义一个类
124 0
|
API PHP 开发者
​邮件发送API示例代码,AOKSend关于PHP示例代码
**邮件发送API简化了开发中的邮件功能,如自动化通知和营销邮件。常见示例包括SendGrid和Mailgun的Python代码。AOKSend在PHP中的使用示例展示了如何使用Guzzle库发送邮件,其特点包括高可靠性、易于集成和强大功能。通过API,开发者能高效、可靠地发送大规模邮件。**
|
存储 监控 安全
PHP医院安全(不良)事件报告系统源码 vue2+element支持11大类不良事件上报、审核处理、分析改进
医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件的情况,更好地掌握不良事件的发生趋势,为及时采取适当的管理措施和流程、制度改进提供了良好的量化依据。系统通过汇集不同类型事件的报告,从中分析出医院内部潜在的问题和风险,将发生的事故降到最低,从而保证病人安全和医护人员安全。
157 0
|
关系型数据库 MySQL 程序员
漏刻有时操作数据php类记录及筛选条件的写法
漏刻有时操作数据php类记录及筛选条件的写法
159 1