Skip to main content
Documentation

Laravel Connector

Packagist: coffeemail/coffeemail-laravel v0.1.0

Official CoffeeMail driver for Laravel Mailer, notifications, and webhooks, featuring Symfony Mailer integration and native queue support.

Looking for the standalone PHP SDK? Check the official coffeemail/coffeemail-php package documentation.

PHP SDK
terminal
composer require coffeemail/coffeemail-laravel

Environment Configuration

Add your credentials to your .env file and set CoffeeMail as your default application mailer.

.env
# .envMAIL_MAILER=coffeemailMAIL_FROM_ADDRESS="contato@seudominio.com.br"MAIL_FROM_NAME="Minha Empresa" COFFEEMAIL_API_KEY=cm_live_sua_chave_aquiCOFFEEMAIL_WEBHOOK_SECRET=whsec_seu_secret_aqui
config/mail.php
// config/mail.php (opcional - configurado automaticamente pelo package)'mailers' => [    'coffeemail' => [        'transport' => 'coffeemail',        'key' => env('COFFEEMAIL_API_KEY'),    ],],

Sending with Laravel Mailer (Mailables & Queues)

Send transactional emails using native Laravel Mail syntax, with full background queue worker support.

app/Mail/PedidoConfirmadoMail.php
namespace App\Mail; use Illuminate\Bus\Queueable;use Illuminate\Mail\Mailable;use Illuminate\Queue\SerializesModels; class PedidoConfirmadoMail extends Mailable{    use Queueable, SerializesModels;     public function __construct(public array $pedido) {}     public function build()    {        return $this->subject('Seu pedido foi confirmado!')            ->html('<h1>Obrigado pela compra!</h1><p>Pedido #' . $this->pedido['id'] . '</p>');    }} // Disparo síncrono ou enfileirado no background worker:use Illuminate\Support\Facades\Mail;use App\Mail\PedidoConfirmadoMail; // Envio imediatoMail::to('cliente@gmail.com')->send(new PedidoConfirmadoMail($pedido)); // Enfileiramento assíncrono (Queue)Mail::to('cliente@gmail.com')->queue(new PedidoConfirmadoMail($pedido));

Direct API Access via Facade

The CoffeeMail Facade provides direct access to all CoffeeMail API resources with [$data, $error] tuple destructuring.

ExemploFacade.php
use CoffeeMail\Laravel\Facades\CoffeeMail; // 1. Envio direto via Facade com tipagem estrita[$data, $error] = CoffeeMail::emails()->send([    'from' => 'noreply@seudominio.com.br',    'to' => 'cliente@gmail.com',    'subject' => 'Notificação Crítica',    'html' => '<p>Conteúdo da mensagem</p>',]); if ($error) {    throw $error->toException();} // 2. Consulta de domínios cadastrados[$domains, $error] = CoffeeMail::domains()->list(); // 3. Consulta de estatísticas[$stats, $error] = CoffeeMail::stats()->get();

Webhook Protection Middleware

The verify.coffeemail.signature middleware validates the HMAC SHA-256 cryptographic signature and protects your routes.

routes/api.php
use Illuminate\Http\Request;use Illuminate\Support\Facades\Route; // routes/api.phpRoute::post('/webhooks/coffeemail', function (Request $request) {    $event = $request->input('event');    $payload = $request->input('data');     match ($event) {        'email.delivered' => Log::info("Email entregue: {$payload['id']}"),        'email.bounced' => Log::warning("Bounce detectado: {$payload['id']}"),        default => null,    };     return response()->json(['status' => 'ok']);})->middleware('verify.coffeemail.signature');