News

Integrate IMAP Into Your PHP Application

Published
Integrate IMAP Into Your PHP Application image

ImapEngine is a PHP package by Steve Bauman that provides a simple API for managing mailboxes without the PHP IMAP extension. It offers a straightforward API for managing mailboxes and is compatible with PHP version 8.1 and above:

use DirectoryTree\ImapEngine\Mailbox;

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

$inbox = $mailbox->folders()->inbox();

// Get all message UIDs in the inbox.
$messages = $inbox->messages()->get();

// All messages in the last 7 days with a specific subject
$messages = $inbox->messages()
    ->since(now()->subDays(7))
    ->subject('Hello World')
    ->get();

// Get all messages in the inbox with various content enabled.
$messages = $inbox->messages()
    ->withHeaders() // Enable fetching message headers.
    ->withFlags() // Enable fetching message flags.
    ->withBody() // Enable fetching message bodies (including attachments).
    ->get();

Once you retrieve messages, you can interact with them to get the subject, the from message sender, attachments, and more. You can even mark a message as read or move it:

foreach ($message->attachments() as $attachment) {
    // Get the attachment's filename.
    $attachment->filename();
    
    // Get the attachment's content type.
    $attachment->contentType();
    
    // Get the attachment's contents.
    $attachment->contents();
    
    // Get the attachment's extension.
    $extension = $attachment->extension();
    
    // Save the attachment to a local file.
    $attachment->save("/path/to/save/attachment.$extension");
}

// Mark the message as read.
$message->markSeen();

// Move the message to an "Archive" folder.
$message->move('Archive');

Key Features

  • Easy Connection Setup: Establish connections to mailboxes using simple configuration
  • Folder Management: Retrieve and manage mailbox folders
  • Message Retrieval: Access and fetch messages from mailboxes
  • Message Interaction: Perform actions such as marking messages as read or unread, and deleting emails
  • Idle Support: Real-time idling on folders

Check out ImapEngine's source code on GitHub for installation instructions and examples.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Filed in

Sponsored

serpapi logo
SerpApi

The Web Search API for Your LLM and AI Applications

Visit SerpApi

The latest

View all →
Laravel AI SDK 1.4 Lets Agents Recover From Tool Failures image

Laravel AI SDK 1.4 Lets Agents Recover From Tool Failures

Read article
Laravel Read Replicas: Check if a Replica Has Caught Up image

Laravel Read Replicas: Check if a Replica Has Caught Up

Read article
UUID Request Input and Migration Failure Events in Laravel 13.42 image

UUID Request Input and Migration Failure Events in Laravel 13.42

Read article
Replay Missed Laravel Scheduled Tasks With Schedule Catchup image

Replay Missed Laravel Scheduled Tasks With Schedule Catchup

Read article
Search Polymorphic Relations and Filament Tables With Laravel Searchable image

Search Polymorphic Relations and Filament Tables With Laravel Searchable

Read article
Laravel Rest Api 3.0: Typed Fields, Metrics, and OpenAPI Docs image

Laravel Rest Api 3.0: Typed Fields, Metrics, and OpenAPI Docs

Read article