Polyscope - The agent-first dev environment for Laravel

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
Honeybadger logo

Honeybadger

Simple developer-focused application monitoring for Laravel. Error tracking, log management, uptime monitoring, status pages, and more!

Honeybadger
LoadForge logo

LoadForge

Scalable load testing for web apps & APIs. Simulate real-world traffic and identify breaking points and performance limits with powerful, scalable load tests designed for Laravel.

LoadForge
DreamzTech logo

DreamzTech

Hire 6-10+ Yrs. experienced skilled Laravel Developers from DreamzTech. We ensure NDA protected, 100% quality delivery. Contact Us & Discuss Your Need.

DreamzTech
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS Starter Kit

SaaSykit is a Multi-tenant Laravel SaaS Starter Kit that comes with all features required to run a modern SaaS. Payments, Beautiful Checkout, Admin Panel, User dashboard, Auth, Ready Components, Stats, Blog, Docs and more.

SaaSykit: Laravel SaaS Starter Kit
Tighten logo

Tighten

We help companies turn great ideas into amazing apps, products, and services.

Tighten
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