jdr/mailer

Build and send emails.

0.0.1 2016-10-08 10:32 UTC

This package is auto-updated.

Last update: 2024-11-12 02:46:42 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

This package aims to simplify sending emails.

Emails are send with swift mailer though the SwiftMailerBridge, however, you can implement your own if you want. As long as it implements the Mailer.

For now, using (twig) templates is only supported with the MailerBundle.

Install

Via Composer

$ composer require jdr/mailer

Usage

<?php

use JDR\Mailer\EmailType;
use JDR\Mailer\Email\Address;
use JDR\Mailer\Part;

/**
 * The EmailType defines the message.
 */
class WelcomeEmail implements EmailType
{
    /**
     * @var User
     */
    private $user;

    /**
     * Constructor.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * {@inheritdoc}
     */
    public function buildEmail(EmailBuilder $builder)
    {
        $builder
            ->add(new Part\Sender(
                new Address('hello@example.com', 'Hello Example')
            ))
            ->add(new Part\Recipients(
                new Address($this->user->getEmail(), $this->user->getUsername())
            ))
            ->add(new Part\Subject(
                'Welcome {{ username }}',
                [
                    '{{ username }}' => $this->user->getUsername(),
                ]
            ))
            ->add(new Part\Message(
                'text/html',
                <<<EOT
Welcome {{ username }},
Thank you for choosing jdr/mailer, enjoy your stay.
EOT
                ,
                [
                    '{{ username }}' => $this->user->getUsername(),
                ]
            ))
        ;
    }
}

// Create a new Mailer (i.e. SwiftMailer)
$mailer = new SwiftMailer();
$mailer->sendEmail(new WelcomeEmail($user));

Change log

Please see CHANGELOG for more information what has changed recently.

Testing

$ composer test

Contributing

Please see CONTRIBUTING and CONDUCT for details.

Security

If you discover any security related issues, please email dev@johanderuijter.nl instead of using the issue tracker.

Credits

License

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