mailgreet / mailgreet-laravel
Official MailGreet SDK for Laravel — send transactional emails, manage subscribers, and use as a native Laravel mailer
dev-main
2026-02-28 01:42 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/mail: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- symfony/mailer: ^6.0|^7.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0|^11.0
This package is auto-updated.
Last update: 2026-04-28 02:17:02 UTC
README
Official Laravel SDK for MailGreet — send transactional emails, manage subscribers, and use as a native Laravel mailer.
Installation
composer require mailgreet/mailgreet-laravel
Configuration
Add your API key to .env:
MAILGREET_API_KEY=mailgreet_xxxxx
Optionally publish the config file:
php artisan vendor:publish --tag=mailgreet-config
Quick Start — Facade
use MailGreet\Laravel\Facades\MailGreet; // Send an email MailGreet::emails()->send([ 'from' => 'hello@yourdomain.com', 'to' => 'user@gmail.com', 'subject' => 'Hello from MailGreet', 'html' => '<p>It works!</p>', ]);
Using as Laravel Mailer
MailGreet integrates as a native Laravel mail transport. Add the mailer to config/mail.php:
'mailers' => [ // ... other mailers 'mailgreet' => [ 'transport' => 'mailgreet', ], ],
Set it as your default mailer in .env:
MAIL_MAILER=mailgreet
Now use Laravel's standard Mail facade:
use Illuminate\Support\Facades\Mail; use App\Mail\WelcomeEmail; Mail::to('user@gmail.com')->send(new WelcomeEmail());
API Resources
Emails
// Send a single email MailGreet::emails()->send([ 'from' => 'hello@yourdomain.com', 'to' => 'user@gmail.com', 'subject' => 'Hello', 'html' => '<h1>World</h1>', 'text' => 'World', // Optional plain-text 'cc' => ['cc@example.com'], // Optional 'bcc' => ['bcc@example.com'], // Optional 'reply_to' => 'reply@example.com', // Optional 'track_opens' => true, // Optional 'track_clicks' => true, // Optional 'metadata' => ['order_id' => '123'],// Optional ]); // Send batch (up to 100) MailGreet::emails()->sendBatch([ ['from' => '...', 'to' => '...', 'subject' => '...', 'html' => '...'], ['from' => '...', 'to' => '...', 'subject' => '...', 'html' => '...'], ]); // List sent emails $emails = MailGreet::emails()->list(['page' => 1, 'limit' => 25, 'status' => 'sent']); // Get email details $email = MailGreet::emails()->get('email-uuid'); // Email statistics $stats = MailGreet::emails()->stats();
Subscribers
// Create $subscriber = MailGreet::subscribers()->create([ 'email' => 'user@example.com', 'first_name' => 'John', 'last_name' => 'Doe', 'group_ids' => ['group-uuid'], ]); // List $subscribers = MailGreet::subscribers()->list(['status' => 'active', 'search' => 'john']); // Get / Update / Delete $subscriber = MailGreet::subscribers()->get('subscriber-uuid'); MailGreet::subscribers()->update('subscriber-uuid', ['first_name' => 'Jane']); MailGreet::subscribers()->delete('subscriber-uuid'); // Statistics $stats = MailGreet::subscribers()->stats(); // Async import MailGreet::subscribers()->importAsync([ 'subscribers' => [ ['email' => 'a@example.com', 'first_name' => 'A'], ['email' => 'b@example.com', 'first_name' => 'B'], ], 'group_ids' => ['group-uuid'], ]);
Forms
$forms = MailGreet::forms()->list(); $form = MailGreet::forms()->get('form-uuid'); $stats = MailGreet::forms()->stats('form-uuid'); $submissions = MailGreet::forms()->submissions('form-uuid', ['page' => 1]);
Groups & Fields
$groups = MailGreet::groups()->list(); $fields = MailGreet::fields()->list();
Account
$account = MailGreet::account()->me();
Webhook Verification
use MailGreet\Laravel\Webhooks\WebhookSignature; Route::post('/webhook/mailgreet', function (Request $request) { $isValid = WebhookSignature::verify( $request->getContent(), $request->header('X-Webhook-Signature'), config('services.mailgreet.webhook_secret') ); if (!$isValid) { abort(401, 'Invalid webhook signature'); } $event = $request->input('event'); $data = $request->input('data'); // Handle the event... return response('OK', 200); });
Error Handling
use MailGreet\Laravel\Exceptions\ApiException; use MailGreet\Laravel\Exceptions\RateLimitException; use MailGreet\Laravel\Exceptions\MailGreetException; try { MailGreet::emails()->send([...]); } catch (RateLimitException $e) { Log::warning("Rate limited. Retry after {$e->getRetryAfterSeconds()}s"); } catch (ApiException $e) { Log::error("API error {$e->getStatusCode()}: {$e->getMessage()}"); Log::error('Validation errors:', $e->getValidationErrors() ?? []); } catch (MailGreetException $e) { Log::error("MailGreet error: {$e->getMessage()}"); }
Configuration Options
.env Variable |
Default | Description |
|---|---|---|
MAILGREET_API_KEY |
— | Your MailGreet API key (required) |
MAILGREET_BASE_URL |
https://api.mailgreet.com |
API base URL |
MAILGREET_TIMEOUT |
30 |
Request timeout in seconds |
MAILGREET_MAX_RETRIES |
3 |
Max retries on 5xx/network errors |
Requirements
- PHP 8.1+
- Laravel 10, 11, or 12
License
MIT