ImapEngine — це просте API для управління поштовими скриньками без використання розширень PHP.

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 26 лютого, 2025
Досліджуйте можливості нового пакету ImapEngine від Стівена Баума, який спрощує управління поштовими скриньками без використання PHP-розширень. Чи готові ви отримати нові знання та вдосконалити свої навички у Laravel? Читайте нашу статтю

Стів Бауман розповідає про свій новий пакет ImapEngine, який пропонує зручний API для управління поштовими скриньками без використання PHP-розширення, а також про його інтеграцію в новий продукт Spamwise.

Дивіться наше повне інтерв'ю:

Або слухайте в обраному додатку для подкастів:

# Приклади ImapEngine:

# Підключення до поштових скриньок

Щоб підключитися до поштової скриньки, створіть новий екземпляр Mailbox з параметрами конфігурації:

$mailbox = new Mailbox([
    'port' => 993,
    'username' => '...',
    'password' => '...',
    'encryption' => 'ssl',
    'host' => 'imap.example.com',
]);

Для підключення за допомогою токена OAuth передайте токен як пароль та встановіть метод authentication на oauth:

$token = '...';
 
$mailbox = new Mailbox([
    'port' => 993,
    'username' => '...',
    'password' => $token,
    'encryption' => 'ssl',
    'authentication' => 'oauth',
    'host' => 'imap.example.com',
]);

# Отримання папок

// Отримати вхідну папку.
$inbox = $mailbox->inbox();
 
// Отримати всі папки.
$folders = $mailbox->folders()->get();
 
// Отримати всі папки, що відповідають шаблону.
$folders = $mailbox->folders()->get('*/Subfolder');
 
// Знайти конкретну папку.
$folder = $mailbox->folders()->find('Folder Name');
 
// Знайти конкретну папку (або викинути помилку).
$folder = $mailbox->folders()->findOrFail('Missing Folder');

# Отримання повідомлень

ImapEngine надає зручний та ланцюговий API для складання складних запитів пошуку повідомлень.

Це дозволяє комбінувати різні критерії пошуку та параметри для отримання саме тих повідомлень, які вам потрібні:

// Отримати вхідну папку.
$inbox = $mailbox->folders()->inbox();
 
// Отримати всі UIDs повідомлень у вхідній папці.
$messages = $inbox->messages()->get();
 
// Отримати всі повідомлення у вхідній папці з різними параметрами вмісту.
$messages = $inbox->messages()
    ->withHeaders() // Дозволити отримання заголовків повідомлень.
    ->withFlags() // Дозволити отримання міток повідомлень.
    ->withBody() // Дозволити отримання тексту повідомлень (включаючи вкладення).
    ->get();

# Корисні посилання