使用PHP的imap系列函数处理gmail的邮件(需要PHP支持imap)

  1. /* connect to gmail */
  2. $hostname = ‘{imap.gmail.com:993/imap/ssl}’;
  3. $mailbox = ‘&ZcWITHb4UXM-‘;
  4. $username = ’emailaddress@gmail.com’;
  5. $password = ’emailpassword’;
  6. /* try to connect */
  7. $inbox = imap_open($hostname . $mailbox, $username, $password) or die(‘Cannot connect to Gmail: ‘ . imap_last_error());
  8. /* grab emails */
  9. $emails = imap_search($inbox, ‘ALL’);
  10. //$emails = imap_search($inbox, ‘SUBJECT “Gmail”‘);
  11. /* if emails are returned, cycle through each… */
  12. if ($emails) {
  13.     /* begin output var */
  14.     $output = ”;
  15.     /* put the newest emails on top */
  16.     rsort($emails);
  17.     /* for every email… */
  18.     foreach ($emails as $num) {
  19. //        $sum++;
  20. //        if ($sum > 3)
  21. //            break;
  22.         /* get information specific to this email */
  23. //        $header = imap_header($inbox, $num);
  24.         $overview = imap_fetch_overview($inbox, $num, 0);
  25.         $message = imap_fetchbody($inbox, $num, 1);
  26. //        $message = imap_body($inbox, $num);
  27.         /* output the email header information */
  28.         $output.= $overview[0]->seen ? ‘<div>’ : ‘<strong style=”display:block” mce_style=”display:block”>’;
  29.         if (preg_match_all(‘/=/?[^/?]+/?B/?([a-zA-Z0-9/+//=]+)/?=/i’, $overview[0]->subject, $subjects)) {
  30.             $subject = ”;
  31.             foreach ($subjects[0] as $value) {
  32.                 $subject .= decodeBase64($value);
  33.             }
  34.         } else {
  35.             $subject = $overview[0]->subject;
  36.         }
  37.         /* if this mail subject contain “Foxmail”, then delete it */
  38.         if (strstr($subject, ‘Foxmail’)) {
  39.             imap_setflag_full($inbox, $num, ‘//Deleted’);
  40. //            imap_delete($inbox, $num, 1);
  41.         }
  42.         $output .= $subject;
  43.         $output.= $overview[0]->seen ? ‘</div>’ : ‘</strong>’;
  44.         $output.= ‘From: ‘ . decodeBase64($overview[0]->from);
  45.         $output.= ‘<br/>Date: ‘ . $overview[0]->date;
  46.         /* output the email body */
  47.         $output.= ‘<div style=”border:1px dashed #000; padding:10px;” mce_style=”border:1px dashed #000; padding:10px;”>’ . $message . ‘</div>’;
  48.     }
  49.     echo $output;
  50. }
  51. function decodeBase64($str) {
  52.     if (preg_match(‘/=/?[^/?]+/?B/?[a-zA-Z0-9/+//=]+/?=/i’, $str)) {
  53.         $str = preg_replace(array(‘/=/?[^/?]+/?B/?/i’, ‘//?=/’), array(”, ”), $str);
  54.         $str = base64_decode($str);
  55.     }
  56.     return $str;
  57. }
  58. /* close the connection */
  59. imap_close($inbox);