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.