conduit-ui/email

Provider-agnostic Laravel email client — Gmail first, extensible to Outlook/IMAP

Maintainers

Package info

github.com/conduit-ui/email

pkg:composer/conduit-ui/email

Statistics

Installs: 12

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.1.0 2026-04-09 23:33 UTC

This package is auto-updated.

Last update: 2026-04-10 00:37:13 UTC


README

Provider-agnostic email client for Laravel. Gmail first, extensible to Outlook, IMAP, and more.

CI

Installation

composer require conduit-ui/email

Configuration

Publish the config:

php artisan vendor:publish --tag=email-config

Set your Gmail access token:

EMAIL_DRIVER=gmail
GMAIL_ACCESS_TOKEN=your-token

Usage

use ConduitUI\Email\EmailManager;

$email = app(EmailManager::class);

// List recent unread messages
$messages = $email->driver()->listMessages('is:unread', maxResults: 10);

// Each message is an EmailMessage DTO
foreach ($messages as $message) {
    echo "{$message->fromName}: {$message->subject}";
    echo PHP_EOL;
}

// Get a specific message
$message = $email->driver()->getMessage('message-id');

// Search with Gmail syntax
$results = $email->driver()->searchMessages('from:boss@company.com has:attachment');

EmailMessage DTO

ConduitUI\Email\Contracts\EmailMessage {
    string $id
    string $threadId
    string $subject
    string $from
    ?string $fromName
    ?string $date
    string $snippet
    array $labelIds
}

Adding Drivers

Implement EmailProvider:

use ConduitUI\Email\Contracts\EmailProvider;

class OutlookDriver implements EmailProvider
{
    public function listMessages(string $query = '', int $maxResults = 10): Collection { ... }
    public function getMessage(string $messageId): EmailMessage { ... }
    public function searchMessages(string $query, int $maxResults = 10): Collection { ... }
}

Register in the EmailManager or extend via config.

Requirements

  • PHP 8.2+
  • Laravel 12 or 13
  • Saloon 4.x
  • Spatie Laravel Data 4.x

License

MIT