PHP парсер почты с интерфейсом на Laravel 11

PHP

Введение

В этой статье мы рассмотрим, как создать скрипт на PHP для загрузки файлов из электронной почты в базу данных. Мы будем использовать PHP 8.2, фреймворк Laravel и библиотеку webklex/laravel-imap для парсинга почты. Этот подход может быть полезен для автоматизации обработки файлов, которые приходят на электронную почту, и их сохранения в базе данных.

Требования к проекту

Для реализации данного проекта нам понадобятся следующие компоненты:

  • PHP 8.2 – современная версия языка программирования PHP.
  • Laravel – популярный фреймворк для разработки веб-приложений на PHP.
  • Filament – административная панель для Laravel, которая упрощает разработку интерфейсов управления приложением.
  • webklex/laravel-imap – библиотека для работы с IMAP-серверами, позволяющая легко получать доступ к почтовым ящикам.

Установка и настройка проекта

Начнем с создания нового проекта на основе Laravel. Откройте терминал и выполните следующую команду:

Это создаст новый проект Laravel в директории myproject. После этого перейдем внутрь созданной директории и установим необходимые пакеты:

Теперь настроим подключение к базе данных. Откройте файл .env и добавьте настройки подключения к вашей базе данных:

После этого выполните миграцию базы данных:

Вы можете создать новую учетную запись пользователя с помощью следующей команды:

Настройка библиотеки webklex/laravel-imap

Добавьте соответствующие переменные окружения в ваш файл .env:

Отправка тестового сообщения на почту

Допустим у нас на почте в папке есть письмо, и нам нужно сохранить вложение в бд

PHP парсер почты с интерфейсом на Laravel 11

И содержимое файла

PHP парсер почты с интерфейсом на Laravel 11

Создание модели и миграции для хранения файлов

Создадим модель и миграцию для таблицы, где будут храниться загружаемые файлы. Выполните следующую команду:

Откройте созданный файл миграции и добавьте поля для хранения имени файла и пути к нему:

И заполним модель:

Создание модели и миграции для настройки для загрузки файлов

Создадим модель и миграцию для таблицы, где будут храниться загружаемые файлы. Выполните следующую команду:

Откройте созданный файл миграции и добавьте поля для хранения имени файла и пути к нему:

Ну и модель к нему:

Выполним миграцию:

Парсер писем и загрузка файлов

Шаг 1: Создание класса сервиса

Создайте новый PHP-файл внутри директории app/Services с именем ImportService.php

Шаг 2: Настройка конструктора и методов

Откройте созданный файл app/Services/ImportService.php и добавьте необходимые методы и зависимости.
Вот пример кода для ImportService:

Создайте новый класс командной строки для парсинга писем и загрузки файлов. Выполните следующую команду:

Откроем созданный файл app\Console\Commands\ParseEmailsCommand.php

Интерфейс для загрузки файла

Создадим интерфейс на filament

После создания стандартного ресурса, нам нужно будет добавить селект для выбора модели импорта.

Для этого создадим еще один сервис app\Services\OptionService.php

app\Services\OptionService.php

Теперь можно зарегистрировать этот сервис в фасаде. Для этого создадим файл app\Facades\Option.php

Теперь можно добавить в селект выбор Модели для импорта

PHP парсер почты с интерфейсом на Laravel 11

И форма для редактирования и создания будет выглядеть следующим образом

PHP парсер почты с интерфейсом на Laravel 11

Запуск скрипта

Сделаем кнопку запуска через интерфейс администратора

Шаг 1. Создадим 3 файла

PHP парсер почты с интерфейсом на Laravel 11
app\Filament\Actions\RunImportTrait.php
app\Filament\Actions\RunImport.php
app\Filament\Actions\Tables\RunImport.php

Теперь можно добавить эти кнопки запуска в наш ресурс

PHP парсер почты с интерфейсом на Laravel 11

И в форму редактирования

PHP парсер почты с интерфейсом на Laravel 11

Теперь чтобы запустить скрипт, достаточно нажать на кнопку Run:

PHP парсер почты с интерфейсом на Laravel 11

Если в ошибок нет, то данные файла сохранятся в нашей базе данных

PHP парсер почты с интерфейсом на Laravel 11

В случае ошибки выйдет информационное сообщение

PHP парсер почты с интерфейсом на Laravel 11


Вы можете настроить регулярный запуск этого скрипта с помощью планировщика задач (cron) на вашем сервере.

Заключение

Мы рассмотрели процесс создания скрипта на PHP для автоматической загрузки файлов из электронной почты в базу данных. Этот подход позволяет существенно упростить обработку больших объемов данных и минимизировать рутинную работу. Использование современных инструментов, таких как Laravel, Filament и webklex/laravel-imap, делает этот процесс быстрым и удобным.

Добавить комментарий