Pobranie listy email z Gmail używając PHP i IMAP

gmail

Jeżeli czujecie potrzebę (na pewno ją czujecie!) pobierania swoich emaili ze swojej skrzynki Gmail z wykorzystaniem IMAP, to mam coś dla Was!

Poniżej znajdziecie (naprawdę) prostą  funkcję, która pozwala pobierać wiadomości od wujka Google. Pamiętajcie jednak, że wykorzystuje ona IMAP i konieczne jest zainstalowanie rozszerzenia php_imap oraz włączenia go w swoim php.ini, a następnie zrestartowanie serwera.

function loadGmailMails($from = 0, $to = 0) {
    $hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
    $username = 'USERNAME';
    $password = 'PASSWORD';

    $inbox = imap_open($hostname, $username, $password) or die('Cannot connect to Gmail: '.imap_last_error());
    $e = imap_search($inbox, 'ALL');
    $emails = array();
    if ($e) {
        rsort($e); // najnowsze na gorze

        if ($to == 0) {
			$to = sizeof($e);
		}

        for ($i = $from; $i < $to; $i++) {
            $overview = imap_fetch_overview($inbox, $e[$i], 0); // pobieramy naglowek
            $message = imap_fetchbody($inbox, $e[$i], 1); // pobieramy tresc

            preg_match('/(?P<name>[a-zA-Z ]+)<(?P<address>.+)>/', $overview[0]->from, $match); // wyciagamy nadawce oraz jego email
            $name = isset($match['name']) ? trim($match['name']) : '';
			$address = isset($match['address']) ? trim($match['address']) : '';

			// tworzymy tablice z danymi konkretnego emaila
            $emails[] = array(
				'read' => $overview[0]->seen,
				'subject' => $overview[0]->subject,
				'from' => array(
					'name' => $name,
					'address' => $address
				),
				'date' => $overview[0]->date, 
				'message' => $message
			);
        }
    }
    imap_close($inbox);

    return $emails;
}