Laravel Postmark

coconutcraig/laravel-postmark image

Laravel Postmark stats

Downloads
918.2K
Stars
192
Open Issues
2
Forks
24

View on GitHub →

Laravel package for sending mail via the Postmark API

Postmark

Laravel Postmark

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

Upgrading

Please see UPGRADE for details.

Installation

You can install the package via composer:

$ composer require coconutcraig/laravel-postmark

The package will automatically register itself.

Usage

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

MAIL_MAILER=postmark
POSTMARK_TOKEN=YOUR-SERVER-KEY-HERE

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

Notification

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.

use CraigPaul\Mail\TemplatedMailMessage;
 
public function toMail($notifiable)
{
return (new TemplatedMailMessage)
->identifier(8675309)
->include([
'name' => 'Customer Name',
'action_url' => 'https://example.com/login',
]);
}

Mailable

It is also possible to use templated notifications via an extension on the base Mailable provided out of the box with Laravel.

use CraigPaul\Mail\TemplatedMailable;
use Illuminate\Support\Facades\Mail;
 
$mailable = (new TemplatedMailable())
->identifier(8675309)
->include([
'name' => 'Customer Name',
'action_url' => 'https://example.com/login',
]);
 
Mail::to('mail@example.com')->send($mailable);

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.

use Symfony\Component\Mailer\Header\TagHeader;
use Symfony\Component\Mime\Email;
 
public function build()
{
$this->withSymfonyMessage(function (Email $message) {
$message->getHeaders()->add(new TagHeader('value'))
});
}

Postmark Metadata

Similar to tags, you can also include metadata by adding a header.

use Symfony\Component\Mailer\Header\MetadataHeader;
use Symfony\Component\Mime\Email;
 
public function build()
{
$this->withSymfonyMessage(function (Email $message) {
$message->getHeaders()->add(new MetadataHeader('field', 'value'));
$message->getHeaders()->add(new MetadataHeader('another-field', 'another value'));
});
}

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

{
"field": "value",
"another-field", "another value"
}

Postmark Servers

Out of the box, we determine the Postmark server you send to using a configuration variable set within the environment you have deployed to. This works for most use cases, but if you have the need or desire to determine the Postmark server at runtime, you can supply a header during the sending process.

use CraigPaul\Mail\PostmarkServerTokenHeader;
use Symfony\Component\Mime\Email;
 
public function build()
{
$this->withSymfonyMessage(function (Email $message) {
$message->getHeaders()->add(new PostmarkServerTokenHeader('POSTMARK_TOKEN'))
});
}

Change log

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

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security Vulnerabilities

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

Credits

License

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

Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Coconutcraig Laravel Postmark Related Articles

Laravel Configuration Arrays Made Simpler with Config::collection() image

Laravel Configuration Arrays Made Simpler with Config::collection()

Read article
Collect and Monitor Everything About Sent Emails in Your Laravel App image

Collect and Monitor Everything About Sent Emails in Your Laravel App

Read article
Laravel 10.39 with a round-robin mailer, dynamic max tries on queued jobs, and more image

Laravel 10.39 with a round-robin mailer, dynamic max tries on queued jobs, and more

Read article
Supercharge your Laravel Forge account with Bellows image

Supercharge your Laravel Forge account with Bellows

Read article
Laravel 9.48 Released image

Laravel 9.48 Released

Read article
Handle Webhooks in Laravel with Receiver image

Handle Webhooks in Laravel with Receiver

Read article
Curotec logo

Curotec

World class Laravel experts with GenAI dev skills. LATAM-based, embedded engineers that ship fast, communicate clearly, and elevate your product. No bloat, no BS.

Curotec
Celebian logo

Celebian

Celebian is a social media marketing agency specializing in helping their clients go viral on TikTok. Whether you're looking to reach a bigger audience or gain more Tiktok followers, likes, and views, they've got you covered.

Celebian
Typesense Search logo

Typesense Search

Typesense is an open source, blazing-fast search engine, optimized for helping you build delightful search experiences for your sites and apps. Natively integrated with Laravel Scout.

Typesense Search
Shift logo

Shift

Running an old Laravel version? Instant, automated Laravel upgrades and code modernization to keep your applications fresh.

Shift
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media