coconutcraig / laravel-postmark
Laravel package for sending mail via the Postmark API
Fund package maintenance!
mvdnbrk
Installs: 1 788 179
Dependents: 1
Suggesters: 0
Security: 0
Stars: 204
Watchers: 5
Forks: 23
Open Issues: 2
Requires
- php: ^8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- illuminate/mail: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- ext-gd: *
- fakerphp/faker: ^1.17
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
Suggests
- mvdnbrk/postmark-inbound: Allows you to process Postmark Inbound Webhooks.
- 3.x-dev
- 3.2.x-dev
- v3.2.0
- 3.1.x-dev
- v3.1.1
- v3.1.0
- 3.0.x-dev
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v3.0.0-RC2
- v3.0.0-RC1
- 2.x-dev
- 2.11.x-dev
- v2.11.2
- v2.11.1
- v2.11.0
- 2.10.x-dev
- v2.10.2
- v2.10.1
- v2.10.0
- 2.9.x-dev
- v2.9.1
- v2.9.0
- 2.8.x-dev
- v2.8.2
- v2.8.1
- v2.8.0
- 2.7.x-dev
- v2.7.2
- v2.7.1
- v2.7.0
- 2.6.x-dev
- v2.6.0
- 2.5.x-dev
- v2.5.0
- 2.4.x-dev
- v2.4.1
- v2.4.0
- 2.3.x-dev
- v2.3.2
- v2.3.1
- v2.3.0
- 2.2.x-dev
- v2.2.0
- 2.1.x-dev
- v2.1.8
- v2.1.7
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- 2.0.x-dev
- v2.0.0
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- 1.0.x-dev
- v1.0.0
- v0.2.1
- v0.2.0
- v0.1.0
- v0.0.1
This package is auto-updated.
Last update: 2024-11-19 02:05:19 UTC
README
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.