/!\ Repository not maintained and outdated /!\
CnertaMailingBundle
CnertaMailinBundle is a Symfony2 Bundle who provide an easy way to send email build with Twig template., (*1)
Create your email message with Twig and use the CnertaMailinBundle's service for sending it., (*2)
Easy, fast and builded on the shoulders of giants like SwiftMail., (*3)
Because quality matters :
, (*4)
Installation
Composer
Add to composer json:, (*5)
``` js
"require": {
//..
"cnerta/mailing-bundle": "dev-master"
}, (*6)
Run:
``` bash
$ composer install cnerta/mailing-bundle
Register the bundle in your AppKernel
class., (*7)
``` php
<?php
// app/AppKernel.php, (*8)
public function registerBundles()
{
$bundles = array(
// ...
new Cnerta\MailingBundle\CnertaMailingBundle(),
);
// ...
}
// ...
### Configure the bundle
In `config.yml`
```yaml
cnerta_mailing:
default_bundle: "FooBundle" # The name of the bundle where the email template are stored
active_log: false # Defined if you want to log each sending email
from_email:
address: exemple@exemple.com
sender_name: "My name is"
How To Use
Create mail templates
- Create a
Mails
folder in your src/AppBundle/Resources
- Create a
BlocksMail.html.twig
in this new folder
- Create a
default.html.twig
- Create a
default.txt.twig
The BlocksMail.html.twig
must contain all the objects and bodys part of your mail.
Exemple :, (*9)
{% block bar_object %}A mail object{% endblock %}
{% block bar_body %}
A Body with full of pretty things !
{% endblock %}
The default.html.twig
is the base template of your mail
Exemple :, (*10)
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<strong>Hello dear user</strong>
<div>
{{ body|raw }} {# This is mandatory, it's the body message of your mail #}
</div>
</body>
</html>
The default.txt.twig
is the base template of your mail
Exemple :, (*11)
Hello dear user</strong
{{ body|raw }} {# This is mandatory, it's the body message of your mail in text version (without HTML elements) #}
Send mail !
Service name : cnerta.mailing
, (*12)
In a Controller
:, (*13)
use Cnerta\MailingBundle\Mailing\MailingServiceInterface;
use Cnerta\MailingBundle\Mailing\MailParameters;
use Cnerta\MailingBundle\Mailing\MailParametersInterface;
[...]
public function fooAction() {
$mailParameters = MailParameters();
$mailParameters
->setTemplateBundle('MyBundle')
->addBodyParameters("user", "User name");
$this->get('cnerta.mailing')
->sendEmail(
array("user@exemple.com"), // List of mail address or Symfony\Component\Security\Core\User\UserInterface
"template_email", // Name of the block define in `BlocksMail.html.twig`
$mailParameters);
}
Log all sending email in a specific channel
Because sometime you need to know what thé system send as email, this bundle provide an easy way to log all message., (*14)
This bundle use the mailingbundle
channel to write log., (*15)
So, if you want to log this specific messages in a separate log file, use the config below., (*16)
monolog:
handlers:
myMailingChannel:
# log all messages (since debug is the lowest level)
level: debug
type: stream
path: "%kernel.logs_dir%/mailing.log"
channels: [mailingbundle]