Получаем электронную почту на PHP за 5 минут

Программирование

Опубликовал:Admin

Дата публикации:08.08.2024

235 0

Начнем с вводных - мы имеем приложение на php (либо на одном из фреймворков, мы чаще всего используем laravel, поэтому его тоже затронем), веб-сервер и задачу получать электронные письма с почтового ящика (или ящиков).

Первый вариант, который приходит на ум любому разработчику - это найти api почтового сервиса, с которого нужно получать почту, и работать с ним. Идея сама по себе - вполне правильная, особенно если речь идет о google, mail.ru и прочих крупных сервисах, но имеет ряд минусов. Минус номер один - для каждого сервиса нужно писать свою обработку, минус номер два - а что делать, если у сервиса api нет?

И здесь нам на помощь приходит такая вещь, как протокол IMAP, который поддерживается всеми современными почтовыми сервисами (даже если это просто почта в рамках вашего хостингга - в 99% случаев она поддерживает IMAP).

IMAP (англ. Internet Message Access Protocol) — протокол прикладного уровня для доступа к электронной почте. То есть по простому, то это протокол для получения писем из почтового ящика.

Для работы с imap на php можно воспользоваться нативными функциями, можно написать свое решение, а можно не изобретать велосипед и взять одну из самых популярных библиотек - php-imap, которую вы без проблем найдете в на github.

Для работы библиотеки нам понадобятся обязательно два модуля php -mbstring и mcrypt, предварительно их нужно будет установить, и для удобства работы - composer.

Переходим в ваш проект и через composer устанавливаем библиотеку.

composer require webklex/php-imap

Далее мы рассмотрим применение для фреймворка laravel, документацию для использования с нативным php вы сможете найти на страничке проектаhttps://www.php-imap.com/.

В .env вам нужно указать настройки вашего imap сервера, получить их обычно можно в рамках самого сервиса или через техподдержку.

Далее - инициируем соединение с сервером.

$client = Client::account('default');
$client->connect();

Выбираем папку с письмами

$folder = $client->getFolderByName('INBOX');

И получаем сами письма

$messages = $folder->messages()->all()->get();

Все, задача выполнена, далее вы можете работать с объектами писем в рамках библиотеки - получать заголовки, текст, вложения, удалять письма или перемещать в нужные папки, в общем делать все, что можете делать через веб-интерфейс почтовика.

Коментарии (0)

Интересные
материалы

Программирование Отрыв от кресла: спортивным программистам придётся побегать и не только
Отрыв от кресла: спортивным программистам придётся побегать...

С января 2024 года в силу вступил обновлённый стандарт подготовки спортивных программистов, включающий требования к физподготовке. Этот инновационный подход, сочетающий умственные задачи и физические упражнения, ставит акцент на в...

Читать дальше
Программирование Знакомимся с телеграм-ботам на PHP
Знакомимся с телеграм-ботам на PHP

Сочетание слов "телеграм-бот" сегодня можно услышать абсолютно в разных местах и фразах, да и в целом боты - довольно трендовая вещь. Разберемся, как быстро и просто добавить такого бота на ваш сайт на PHP.

Читать дальше
Программирование Интеграция iiko - курс молодого бойца
Интеграция iiko - курс молодого бойца

О том, что нужно знать и с чего начать интеграцию iiko и вашего сайта или приложения.

Читать дальше