mvdnbrk / postmark-inbound
API to process Postmark Inbound Webhooks.
Fund package maintenance!
mvdnbrk
Installs: 1 721
Dependents: 0
Suggesters: 2
Security: 0
Stars: 7
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: ^7.1 || ^8.0
- tightenco/collect: ^5.8 || ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- phpunit/phpunit: ^7.5 || ^8.0 || ^9.4
- symfony/var-dumper: ^4.3 || ^5.0
README
postmark-inbound
Simple API to process Postmark Inbound Webhooks.
Installation
You can install the package via composer:
composer require mvdnbrk/postmark-inbound
Usage
$inbound = new \Mvdnbrk\Postmark\InboundMessage(file_get_contents('php://input')); $inbound->from->name; // John Doe $inbound->from->email; // john@example.com $inbound->from->full; // John Doe <john@example.com> $inbound->tag; $inbound->replyTo; $inbound->textBody; $inbound->htmlBody; $inbound->messageId; // MessageID assigned by Postmark. $inbound->messageIdFromHeaders; // Message-ID value from headers. $inbound->strippedTextReply; $inbound->originalRecipient; $inbound->originalDate; // Wed, 6 Sep 2017 12:00:00 +0200 $inbound->date; // PostmarkDate::class which is an extension of the DateTime::class $inbound->date->format('Y-m-d H:i:s') // 2017-09-06 12:00:00 $inbound->date->isUtc // boolean, is the date in the UTC timezone? $inbound->date->timezone; // +02:00 $inbound->date->inUtcTimezone() // Sets the timezone to UTC. $inbound->subject; // Subject of the message. $inbound->isSpam; // boolean, is the message to be considered as spam? $inbound->spamStatus; // Spam status, defaults to 'No' when not present. $inbound->spamScore; // float, defaults to 0.0 when not present. $inbound->to->count() // Recipient count. $inbound->cc->count() $inbound->bcc->count() $inbound->attachments->count() // Attachment count. $inbound->headers->count() // Header count.
Recipients
$inbound->to->each(function($contact) { $contact->name; $contact->email; $contact->full; $contact->mailboxHash; }); $inbound->cc->each(function($contact) { $contact->name; ... }); $inbound->bcc->each(function($contact) { $contact->name; ... });
Get the first recipient:
$inbound->to->first();
Attachments
$inbound->attachments->each(function($attachment) { $attachment->name; $attachment->contentType; $attachment->contentLength; $attachment->content(); // Base64 decoded data });
Get the first attachment:
$inbound->attachments->first();
Get the last attachment:
$inbound->attachments->last();
Headers
The Message-ID in the headers are sometimes keyed with upper ID
and sometimes they are in the format of Id
.
So if you want to get the Message-ID from a message you can simply use the $inbound->messageIdFromHeaders
helper attribute.
Please note that $inbound->messageId
will give you the id of the message that was assigned by Postmark.
$inbound->headers->each(function($value, $key) { ... }); $inbound->headers->get('Message-ID'); $inbound->headers->get('MIME-Version'); $inbound->headers->get('Received-SPF'); $inbound->headers->get('X-Spam-Score'); $inbound->headers->get('X-Spam-Status'); ...
Change log
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING 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.