PHPackages                             nightinker/laravel-snailmark - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. nightinker/laravel-snailmark

ActiveLibrary[Mail &amp; Notifications](/categories/mail)

nightinker/laravel-snailmark
============================

Laravel mail transport for sending email via the Snailmark API.

v1.0.0(1mo ago)0300↓63.3%MITPHP ^8.1

Since Jul 6Compare

[ Source](https://github.com/nightinker/laravel-snailmark)[ Packagist](https://packagist.org/packages/nightinker/laravel-snailmark)[ Docs](https://github.com/nightinker/laravel-snailmark)[ RSS](/packages/nightinker-laravel-snailmark/feed)WikiDiscussions Synced 1w ago

READMEChangelog (1)Dependencies (5)Versions (2)Used By (0)

Laravel Snailmark
=================

[](#laravel-snailmark)

A Laravel mail transport for sending email through the [Snailmark](https://snailmark.com) API.

Register the `snailmark` mail driver and keep using `Mail`, `Notification`, and Mailables exactly as you do today — Snailmark handles delivery, templates, message streams, and tracking.

Installation
------------

[](#installation)

```
composer require nightinker/laravel-snailmark
```

The service provider is auto-discovered.

Configuration
-------------

[](#configuration)

Add a `snailmark` entry to the `services` config (`config/services.php`):

```
'snailmark' => [
    'token' => env('SNAILMARK_TOKEN'),
    // Optional — override for a self-hosted Snailmark instance.
    'base_url' => env('SNAILMARK_BASE_URL', 'https://api.snailmark.com'),
    // Optional — default message stream for every send.
    'message_stream' => env('SNAILMARK_MESSAGE_STREAM', 'outbound'),
],
```

Add the mailer to `config/mail.php` under `mailers`:

```
'snailmark' => [
    'transport' => 'snailmark',
    // Optional per-mailer stream override.
    'message_stream_id' => env('SNAILMARK_MESSAGE_STREAM'),
],
```

Then point your app at it in `.env`:

```
MAIL_MAILER=snailmark
SNAILMARK_TOKEN=snl_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MAIL_FROM_ADDRESS="you@your-verified-domain.com"
MAIL_FROM_NAME="Your App"
```

`SNAILMARK_TOKEN` is a **server token** from the Snailmark dashboard (Server → API Tokens). The `From` address must be on a domain verified in Snailmark.

Usage
-----

[](#usage)

Nothing changes in your app code — send mail as usual:

```
Mail::to($user)->send(new OrderShipped($order));

$user->notify(new ResetPasswordNotification($token));
```

### Overriding the server token per message

[](#overriding-the-server-token-per-message)

Attach a `SnailmarkServerTokenHeader` to send a single message through a different Snailmark server (useful for multi-tenant apps):

```
use Snailmark\Mail\SnailmarkServerTokenHeader;

Mail::to($user)->send(
    (new OrderShipped($order))->withSymfonyMessage(function ($message) use ($token) {
        $message->getHeaders()->add(new SnailmarkServerTokenHeader($token));
    })
);
```

Notes
-----

[](#notes)

- The transport sends the full message envelope — Cc, Bcc, Reply-To, attachments, tags, metadata, and custom headers.
- Templated sends: encode `{"alias": "...", "model": {...}}` as the message HTML body to hit `POST /api/email/withTemplate`.

License
-------

[](#license)

MIT

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance90

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

49d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10015302?v=4)[Harlequin Doyon](/maintainers/harlekoy)[@harlekoy](https://github.com/harlekoy)

---

Tags

laravelmailemailtransactionalsnailmark

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/nightinker-laravel-snailmark/health.svg)

```
[![Health](https://phpackages.com/badges/nightinker-laravel-snailmark/health.svg)](https://phpackages.com/packages/nightinker-laravel-snailmark)
```

###  Alternatives

[propaganistas/laravel-disposable-email

Disposable email validator

6023.2M7](/packages/propaganistas-laravel-disposable-email)[illuminate/notifications

The Illuminate Notifications package.

483.1M1.2k](/packages/illuminate-notifications)[erag/laravel-disposable-email

A Laravel package to detect and block disposable email addresses.

265192.2k1](/packages/erag-laravel-disposable-email)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5226.7k](/packages/simplestats-io-laravel-client)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

353.6k](/packages/eslazarev-wildberries-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
