Собственно, в этом нет ничего сложного, но имеет довольно большой список того, для чего это может понадобиться.
Я лично это использовал чтобы отправлять себе в вк уведомления о выходе новых серий моих любимых сериалов. Эти уведомления как раз и приходят на один из моих почтовых ящиков.
То, как писать сообщения в вк через 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); //Не забываем закрыть коннект
Вот и всё, собственно. В этом нет ничего сложного. Если будут какие-то вопросы - задавайте их в комментариях. )