Как получать и обрабатывать данные Gmail - PullRequest
2 голосов
/ 15 ноября 2010

Я занимаюсь проектом, который включает обработку данных из моей истории Gmail.

В частности, я хочу создать многостраничный PDF-файл со специальной страницей для каждого из примерно 100 человек - с указанием таких данных, как количество сообщений электронной почты, отправленных в прошлом году, количество сообщений электронной почты, полученных в прошлый год, средняя длина слова электронной почты, наиболее часто используемые термины в электронной почте, дата самой старой отправленной или полученной электронной почты, возможно, даже среднее количество восклицательных знаков или выговоров на одно электронное письмо и т. д.

Я видел этот вопрос , который содержал полезную ссылку на IMAP-функции в руководстве по PHP , но кто-нибудь может мне помочь с тем, что изменит архитектура и сложность такого проекта быть?

Я предполагаю:

  1. написать скрипт php для запуска некоторых функций IMAP на моих данных Gmail и записать его в базу данных MySQL.
  2. написать другой скрипт для запуска цикла запросов MySQL к базе данных и распечатать в PDF на основе результатов

1 Ответ

2 голосов
/ 15 ноября 2010

Прежде всего, вам нужна библиотека 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 для более подробных опций. Найдите строку " tag tag ПОИСК 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. Это не так сложно, как только вы поймете основной поток.
...