anekdotes / mailer
A Mailing Adapter to handle different Mail APIs.
2.0.0
2021-11-25 16:52 UTC
Requires
- php: >=7.4.0
- anekdotes/file: *
- sendgrid/sendgrid: *
- symfony/mailer: *
Requires (Dev)
- dg/bypass-finals: ^1.3
- phpunit/phpunit: *
README
Allows adaptation and abstraction of mailing APIs. The goal of this project is to unify different Mailer APIs into a unified Send function. In otherwords, this Mailer allows to only have to change the Mailer instantion if a different API needs to be used, without needing to change the Send Messages calls.
Installation
Install via composer into your project:
composer require anekdotes/mailer
Basic Usage
You can either use the Mailer abstraction class to simplify adapter handling
use Anekdotes\Mailer\Mailer; use Anekdotes\Mailer\Adapters\SendgridAdapter; use Sendgrid\Sendgrid; $mailer = new Mailer(new SendgridAdapter(new SendGrid('sendgridapikey'))); $mailer->send('<p>My HTML message</p>',function($message){ $message->from('me@you.com','Me') ->to('you@me.com','You') ->subject('This is a message'); });
Or directly use an adapter
use Anekdotes\Mailer\Adapters\SendgridAdapter; $sendgrid = new SendgridAdapter(new SendGrid('sendgridapikey')); $sendgrid->send('<p>My HTML message</p>',function($message){ $message->from('me@you.com','Me') ->to('you@me.com','You') ->subject('This is a message'); });
Adapters
The following adapters are currently available for use :
SendgridAdapter
use Anekdotes\Mailer\Mailer; use Anekdotes\Mailer\Adapters\SendgridAdapter; use Sendgrid\Sendgrid; $mailer = new Mailer(new SendgridAdapter(new SendGrid('sendgridapikey'))); $mailer->send('<p>My HTML message</p>',function($message){ $message->from('me@you.com','Me') ->to('you@me.com','You') ->subject('This is a message'); });
###SymfonyAdapter
use Anekdotes\Mailer\Mailer; use Anekdotes\Mailer\Adapters\Symfony\SymfonyAdapter; use Symfony\Component\Mailer\Mailer as SymfonyMailer; use Symfony\Component\Mailer\Transport as SymfonyTransport; $dsn = 'smtp://user:pass@smtp.example.com:25'; $symfonyTransport = SymfonyTransport::fromDsn($dsn); $symfonyMailer = new SymfonyMailer($symfonyTransport); $mailer = new Mailer(new SymfonyAdapter($symfonyMailer)); $mailer->send('<p>My HTML message</p>',function($message){ $message->from('me@you.com','Me') ->to('you@me.com','You') ->subject('This is a message'); });
use Anekdotes\Mailer\Mailer; use Anekdotes\Mailer\Adapters\SwiftMailerAdapter; use \Swift_Mailer; use \Swift_SmtpTransport; $mailer = new Mailer(new SwiftMailerAdapter(new Swift_Mailer(Swift_SmtpTransport::newInstance('smtp.example.org', 25) ->setUsername('your username') ->setPassword('your password')))); $mailer->send('<p>My HTML message</p>',function($message){ $message->from('me@you.com','Me') ->to('you@me.com','You') ->subject('This is a message'); });
###MailTrapAdapter
Removed as of 2.0.0