如何检索和处理Gmail数据

时间:2010-11-14 22:33:13

标签: php mysql email gmail email-integration

我正在开展一个项目,涉及处理Gmail历史记录中的数据。

具体来说,我想生成一个多页样式的PDF,其中包含100个左右的每个人的自定义页面 - 显示过去一年发送的电子邮件数量,收到的电子邮件数量等数据过去的一年,电子邮件的平均字长,电子邮件中使用最多的条款,发送或接收的最旧电子邮件的日期,甚至可能是每封电子邮件的平均感叹号数或咒骂数等。

我看到了this question,它有一个与IMAP functions in the PHP manual有用的链接,但有人可以帮助我解决这样一个项目的架构和难度吗?

我想象的是:

  1. 编写一个php脚本,在我的Gmail数据上运行一些IMAP功能,并将其写入MySQL数据库。
  2. 编写另一个脚本以在数据库上运行MySQL查询循环并根据结果打印到PDF

1 个答案:

答案 0 :(得分:2)

首先,你需要php imap库。 然后,只需使用这个简单的分步教程:

$email    = "email@gmail.com";//or alamatemail@nama_domain_hosted
$password = "ini password anda";

$imap_host = "{imap.gmail.com:993/imap/ssl}";

$imap_folder = "INBOX"; //it's what is called label in Gmail

$mailbox = imap_open($imap_host . $imap_folder,$email,$password) or die('Failed to open connection with Gmail: ' . imap_last_error());

使用上面的代码,您已经创建了与Gmail的连接 现在,如果要搜索特定消息,请使用:

$emails = imap_search( $mailbox, 'ALL');
  

阅读RFC 1176了解更详细的选项。搜索字符串“标记SEARCH search_criteria ”或阅读PHP的imap_search文档。

此代码将处理检索到的消息(然后您可以根据需要将其处理为MySQL):

if( $emails )
{
    foreach( $emails as $email_id)
    {
        $email_info = imap_fetch_overview($mailbox,$email_id,0);
        $message = imap_fetchbody($mailbox,$email_id,2);
        echo "Subject: " . $email_info[0]->subject . "\n";
        echo "Message: " . $message . "\n";
    }
}

回答您的其他问题:

  1. 可以在本地服务器上处理电子邮件,甚至可以从您自己的笔记本电脑/台式机处理电子邮件。它的工作方式与桌面电子邮件客户端的工作方式相同。
  2. 一旦掌握了基本流程,就不那么难了。