IMAP PHP základy

Přístup k emailové schránce přes php může být velmi užitečný. Používal jsem IMAP například pro zpracování zpráv o pohybech na bankovním účtu (přinejmenším do doby, než moje banka konečně uveřejnila API) nebo pro integrovaný systém zpracování e-mailové komunikace přímo v e-shopu. Musí-li uživatel zpracovávat velké množství e-mailů, potom se z dlouhodobého hlediska investice času (nebo peněz) do vývoje webmail systému vyplatí.
PHP má integrovanou opravdu obsáhlou knihovnu funkcí pro práci s IMAP. Doporučuji nejprve důkladně prostudovat manuál: http://php.net/manual/en/book.imap.php

Nejprve potřebujeme nastavit správně připojení k mailserveru. To bývá největší problém, proto se pokusím funkci imap_open probrat detailněji než odstatní funkce. Jak můžete zjistit v manuálu, tato funkce má tři povinné parametry:

imap_open ( string $mailbox , string $username , string $password );

Kámen úrazu spočívá v prvním parametru. Ten má následující formát:

„{“ remote_system_name [„:“ port] [flags] „}“ [mailbox_name]

Budete-li se chtít připojit například do schránky na wedosu, potom remote_system_name je imap-98060.m60.wedos.net (čísla v adrese budete mít téměř určitě jiná).
Port pro IMAP je 993 využíváte-li protokol zabezpečení SSL/TLS nebo 143 chcete-li STARTTLS.
Bezprostředně za číslem portu se uvádí návěští oddělené lomítkem. V mém příkladu níže jsem nastavil ujištění, že chci imap, šifrování ssl (podobně jako u https) a novalidate-cert, protože na sdíleném hostingu jsou většinou jen daným serverem podepsané certifikáty.
Jako mailbox_name uvádím INBOX, což je výchozí hodnota chcete-li vstoupit do schránky příchozí pošty.

Funkce imap_num_msg() zjistí počet zpráv v INBOXu. Pomocí cyklu for je všechny zpracujeme. Funkce imap_body() předává obsah těla zprávy. V naší ukázce se podíváme, jak mazat zprávy. Smažeme například všechny zprávy, které obsahují v těle text „Potřebujete peníze?“. Pokud je podmínka splněna, funkcí imap_delete() zprávu označíme ke smazání. V té chvíli však ještě není nadobro smazána! O to se postará až zavolání funkce imap_expunge() těsně před skončením celého skriptu (nevolejte tuto funkci v cyklech). Odznačit zprávu určenou ke smazání lze funkcí imap_undelete().
Prohlédávat e-maily by mělo jít lépe s funkcí imap_search() než s mb_strpos().

Slušností je nakonec uzavřít imap spojení.