V dnešním článku se zaměříme na to, jak zpracovat příchozí e-maily. Pokud potřebujete deaktivovat odběratele newsletteru, kteří mají nedostupnou schránku a vám se vrací emaily o nedoručitelnosti, je řešením takovéto emaily projít a adresu odstranit. Nemusíme to však dělat ručně, dá se to zautomatizovat.
Předpokládám, že na odesílání newsletteru se bude používat spíše samostatná schránka, něco jako no-reply@domena.cz. Pokud by se používala nějaká pracovní, tak by se mohlo stát, že byste prošvihli e-mail o nedoručení, který jste prošvihnout nechtěli.
Následující skript se tedy nejprve připojí do schránky přes imap. Projde všechny zprávy a přečte si jejich obsah. V textu zprávy najde všechny e-mailové adresy, vyloučí ty, které mají co dočinění s doménou odesílatele, a naznačí zpracování co se s těmi adresami dá udělat, typicky smazat nebo deaktivovat.
$mbox = imap_open("{imap.domena.cz:143/notls}Inbox", "jmeno", "heslo") or die(); $MC = imap_check($mbox); $result = imap_fetch_overview($mbox,"1:{$MC->Nmsgs}",0); foreach ($result as $overview) { $uid=$overview->uid; if ($overview->from == "MAILER-DAEMON@domena.cz") { $zprava=imap_fetchbody($mbox,$uid,1,FT_UID); $pattern = '/[a-z0-9_\-\+]+@[a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i'; preg_match_all($pattern, $zprava, $matches); foreach ($matches[0] as $email) { if (strpos($email,'domena')===false) { --- /zkontroluj email v databázi a pokud najdeš shodu/ { --- /smaž nebo deaktivuj/ imap_delete($mbox,$uid,FT_UID); break; } } } } } imap_expunge($mbox); imap_close($mbox);