Laravel package for sending mail via the Postmark API

Fund package maintenance!

Installs: 327 224

Dependents: 2

Suggesters: 0

Security: 0

Stars: 160

Watchers: 2

Forks: 19

Open Issues: 4

v3.0.0-RC1 2022-01-06 01:58 UTC



Laravel Postmark

Latest Version on Packagist Software License Tests StyleCI Total Downloads

Postmark is the easiest and most reliable way to be sure your important transactional emails get to your customer's inbox.


Please see UPGRADE for details.


You can install the package via composer:

$ composer require coconutcraig/laravel-postmark

The package will automatically register itself.

You can optionally publish the config file with:

php artisan vendor:publish --tag="postmark-config"


Update your .env file by adding your server key and set your mail driver to postmark.


Please note, starting at Laravel 7, the MAIL_DRIVER environment variable was renamed to MAIL_MAILER. Your application might still use MAIL_DRIVER, so please refer to your mail.php configuration file.

That's it! The mail system continues to work the exact same way as before and you can switch out Postmark for any of the pre-packaged Laravel mail drivers (smtp, mailgun, log, etc...).

Remember, when using Postmark the sending address used in your emails must be a valid Sender Signature that you have already configured.

Postmark Templates


Postmark offers a fantastic templating service for you to utilize instead of maintaining your templates within your Laravel application. If you would like to take advantage of that, this package offers an extension on the base MailMessage provided out of the box with Laravel. Within a Laravel notification, you can do the following to start taking advantage of Postmark templates.

public function toMail($notifiable)
    return (new \Coconuts\Mail\MailMessage)
            'name' => 'Customer Name',
            'action_url' => '',


It is also possible to use templates via a Mailable.

use Illuminate\Support\Facades\Mail;
use Coconuts\Mail\PostmarkTemplateMailable;

    ->send((new PostmarkTemplateMailable())
            'name' => 'Customer Name',
            'action_url' => '',

You may also utilize an alias instead of the template identifier by using the ->alias() method in both cases.

Postmark Tags

If you rely on categorizing your outgoing emails using Tags in Postmark, you can simply add a header within your Mailable class's build method.

public function build()
    $this->withSwiftMessage(function (\Swift_Message $message) {
        $message->getHeaders()->addTextHeader('tag', 'value');

Postmark Metadata

Similar to tags, you can also include metadata by adding a header. Metadata headers should be prefixed with metadata- where the string that follows is the metadata key.

public function build()
    $this->withSwiftMessage(function (\Swift_Message $message) {
        $message->getHeaders()->addTextHeader('metadata-field', 'value');
        $message->getHeaders()->addTextHeader('metadata-another-field', 'another value');

In this case, the following object will be sent to Postmark as metadata.

    "field": "value",
    "another-field", "another value"

Change log

Please see CHANGELOG for more information on what has changed recently.


$ composer test


Please see CONTRIBUTING and CONDUCT for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.



The MIT License (MIT). Please see License File for more information.