代码之家  ›  专栏  ›  技术社区  ›  Mike Eng

如何检索和处理Gmail数据

  •  2
  • Mike Eng  · 技术社区  · 14 年前

    我正在做一个项目,涉及处理我的Gmail历史数据。

    具体来说,我想生成一个多页样式的PDF,它为大约100个人中的每一个人都有一个自定义页面——显示数据,例如过去一年发送的电子邮件数量、过去一年接收的电子邮件数量、电子邮件的平均字长、电子邮件中最常用的术语、发送或接收的最旧电子邮件的日期,甚至可能是每封电子邮件中感叹号或咒语的平均数量,等等。

    我看到了 this question ,它与 IMAP functions in the PHP manual ,但有人能帮我解决这样一个项目的架构和困难吗?

    我设想:

    1. 编写一个php脚本,在Gmail数据上运行一些IMAP函数,并将其写入MySQL数据库。
    2. 编写另一个脚本,在数据库上运行MySQL查询循环,并根据结果打印为PDF
    1 回复  |  直到 7 年前
        1
  •  2
  •   ariefbayu    14 年前

    首先,您需要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 更详细的选项。搜索字符串“ 标记搜索搜索条件 “或者在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. 一旦你掌握了基本的流程就没那么难了。