Mailjet Bundle
, (*1)
Usage
This bundle provides a transport element to use SwiftMailer
from the
Symfony
project to send mail using Mailjet
., (*2)
Configuration
To configure the bundle, you will have to enter the api key, secret and default
template id :, (*3)
``` yaml, (*4)
# app/config/config.yml
dekalee_mailjet:
api_key: %api_key%
secret_key: %secret_key%
base_template_id: %base_template_id%
You will also have to modify the transport in the mailer configuration :
``` yaml
# app/config/config.yml
swiftmailer:
transport: mailjet
Extension
In mailjet, you can define your own template for the mail you send. It is
possible to use different template for each mail you will send., (*5)
To perform this action, you will need to guess the template Id from the
message being send., (*6)
Create a guesser
You should implement the class : Dekalee\MailjetBundle\Guesser\TemplateIdGuesserInterface
, (*7)
There are two methods inside :, (*8)
- supports, which will decide if your strategy is able to give the
template Id for this message
- guess, which will return the template Id for the given message
Declare the service
Once your class is created, you should add the tag dekalee_mailjet.guesser.template_id.strategy
to your service definition, (*9)
Campaign management
Affiliate a user to a campaign
To affiliate a contact to a campaign, you should use the ContactListSubscriber
class,
declared under the dekalee_mailet.subscriber.contact_list
key in the container:, (*10)
``` php
class RegisterUser
{
protected $subscriber;, (*11)
public function __construct(ContactListSubscriber $subscriber)
{
$this->subscriber = $subscriber;
}
public function addUser(User $user)
{
$this->subscriber->subscribe(
'campaignName',
$user->getEmail(),
[
'subject' => 'Mail subject (linked to the user)',
'content' => 'Mail content (linked to the user)',
]
);
}
}
The template used for sending personnal emails to the contact from this list would be
able to use the variable `content_CampaignName` and `subject_CampaignName`.
### Unsubscribe a user from a campaign
To affiliate a contact to a campaign, you should use the `ContactListUnSubscriber` class,
declared under the `dekalee_mailet.unsubscriber.contact_list` key in the container:
``` php
class UnRegisterUser
{
protected $unsubscriber;
public function __construct(ContactListUnsubscriber $unsubscriber)
{
$this->unsubscriber = $unsubscriber;
}
public function delUser(User $user)
{
$this->unsubscriber->unsubscribe('campaignName', $user->getEmail());
}
}
Custom template
If you want to use a custom template from mailjet with some custom variables, there is a way to do it in the bundle:, (*12)
namespace Bar;
use Dekalee\MailjetBundle\Message\SwiftCustomVarsMessage;
class FooMessage extends SwiftCustomVarsMessage {}
- Fill the vars property with the parameters you want to send
$message = new FooMessage();
$message->setVars(['bar' => 'baz']);
- Configure the simple message guesser to use your template
dekalee_mailjet:
simple_template_choice:
Bar\FooMessage: 1
If you send the mail throught mailjet, the template 1 will be used., (*13)
In your working environment, you will receive a mail with all the vars json encoded., (*14)
Debug
Since version 2.1.0, it is possible to use mailjet debug capabilities., (*15)
You can directly configure them in the config file:, (*16)
dekalee_mailjet:
reporting_email: foo@bar.com
force_deliver: true
The reporting_email
parameter will be used to send the error report mail., (*17)
The force_deliver
parameter will force the mail deliver even if there is a syntax issue., (*18)
Limitation
For the moment, the bundle does not supports the inline attachement functionnality from mailjet,
but contributions are welcome :)., (*19)
Warning for symfony4
When used with env parameters, the swiftmailer bundle automatically generates the transport by using
a factory. To avoid this workflow, you shall not use env parameters to configure your swiftmailer installation., (*20)