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

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
Building EasyReply: How We Used Laravel to Unify Customer Support image

Building EasyReply: How We Used Laravel to Unify Customer Support

Read article
PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum image

PostgreSQL Monitoring and Schema Linting for Laravel with Vacuum

Read article
PayZephyr: One Payment API for Stripe, Paystack, and PayPal image

PayZephyr: One Payment API for Stripe, Paystack, and PayPal

Read article
Bifrost Turns One With AI Builds and New Workflows image

Bifrost Turns One With AI Builds and New Workflows

Read article
Preview Blade Templates in macOS Finder with Quick Blade image

Preview Blade Templates in macOS Finder with Quick Blade

Read article
Artisan Debugging Commands in Laravel Telescope 5.24.0 image

Artisan Debugging Commands in Laravel Telescope 5.24.0

Read article