Чтение писем IMAP через PHP

Собственно, в этом нет ничего сложного, но имеет довольно большой список того, для чего это может понадобиться.
Я лично это использовал чтобы отправлять себе в вк уведомления о выходе новых серий моих любимых сериалов. Эти уведомления как раз и приходят на один из моих почтовых ящиков.
То, как писать сообщения в вк через PHP я уже затрагивал в одной из прошлых записей, бот вк и callback api

Здесь я расскажу только про IMAP.

Подключение к IMAP через PHP выглядит следующим образом:

$host = '{HOST.RU}';
$email = 'EMAIL@HOST.RU';
$pass = 'PASSWORD';
	$connect = imap_open($host, $email, $pass)
		or die("can't connect: ".imap_last_error()); ;

Так же в хост можно добавлять всякие разные опции. Порт чаще всего используется 993, поэтому я его сразу подставлю.

{HOST.RU:993/ssl/novalidate-cert}INBOX

Параметр ssl указывает на то, что нужно использовать SSL для шифрования.
Параметр novalidate-cert указывает на то, что сертификат проверять не нужно. Если у Вас на сервере самоподписанный сертификат — это то, что вам нужно!
Больше параметров вы можете найти в официальной документации, не будем заострять на этом внимание.

Кстати, пока я не использовал SSL с параметром novalidate-cert, я получал вот такую вот ошибку.

can't connect: [CLOSED] IMAP connection broken (server response)

Давайте получим все непрочитанные письма в ящике и выведем их на экран.

	$new_mails = imap_search($connect, 'UNSEEN'); //Получим ID непрочитанных писем
	$new_mails = implode(",", $new_mails); //Соберём все ID в строчку через запятую

	$overview = imap_fetch_overview($connect,$new_mails,0); //Получаем инфу из заголовков сообщений
	
	foreach ($overview as $ow) { //пробегаем по полученному массиву. Каждый элемент массива - новое письмо
		$subject = iconv_mime_decode($ow->subject,0,"UTF-8"); //Получаем тему письма и сразу декодируем её
		//потому что скорее всего у темы не будет читаемой человеком кодировки
		
		$body = imap_fetchbody($connect,$ow->msgno,1); //Получаем содержимое письма. У него скорее всего уже будет
		//Нужная нам кодировка. Поэтому оставляем так. Если нет, то вы знаете что делать, ахах.
		//После выполнения этой функции письмо станет автоматически прочитанным.
		
		echo "Subject: $subject <br />"; //Выведем тему письма
		echo "Body: $body <br /><br />"; //Выведем содержимое письма
	}
	
	imap_close($connect); //Не забываем закрыть коннект

Вот и всё, собственно. В этом нет ничего сложного. Если будут какие-то вопросы — задавайте их в комментариях. )