Symfony bundle for SendGrid. Utilizes the SendGrid PHP Library https://github.com/sendgrid/sendgrid-php to make it compatiable with SwiftMailer.
Older version (1.x) can be found here: https://github.com/expertcoder/SwiftmailerSendGridBundle/tree/1.x
composer require expertcoder/swiftmailer-send-grid-bundle
or manually
composer.json
"require": {
...
"expertcoder/swiftmailer-send-grid-bundle": "~2.0"
}
config/packages/swiftmailer.yaml
swiftmailer:
transport: expertcoder_swift_mailer.send_grid
Don't forget to set your Sendgrid API Key in your .env file, and that you can set your mail's categories from config/packages/expert_coder_swiftmailer_send_grid.yaml
AppKernel.php
$bundles = [
// ...
new ExpertCoder\Swiftmailer\SendGridBundle\ExpertCoderSwiftmailerSendGridBundle(),
];
parameters.yml.dist
parameters:
sendgrid_api_key: PleaseEnterSendGridApiKey
config.yml
swiftmailer:
transport: expertcoder_swift_mailer.send_grid
expert_coder_swiftmailer_send_grid:
api_key: %sendgrid_api_key%
categories: [my_category] # optional, will be added to all mails sent (can be seen on sendgrid dashboard)
Since Symfony 3.2, you must name the custom transport service swiftmailer.mailer.transport.< name > so you can use one of the solutions below:
services.yml
services:
swiftmailer.mailer.transport.expertcoder_swift_mailer.send_grid.transport:
alias: expertcoder_swift_mailer.send_grid.transport
OR
config.yml
swiftmailer:
transport: 'swiftmailer.mailer.transport.expertcoder_swift_mailer.send_grid'
This bundle provide a little helper to launch tests locally and here is a quick explanation:
- The
config_test.yml
file contains configuration associated with the bundle. - The
manual-test.sh
helps you test against a specific symfony version and is the main helper to execute tests. You just have to dosh tests/manual-test.sh versionNumber
where versionNumber is the main Symfony version you want to test (ex: 4) - The last file contains PhpUnit tests with help of
nyholm/symfony-bundle-test
. Note that we set a timeout of 1sec when sending mail to sendgrid as we do not test the actual sendgrid API with a real key.
Following RFC 1341, section 7.2, if either text/html
or text/plain
are to be sent in your email: text/plain
needs to be first, followed by text/html
, followed by any other content.
For more informations, please see SwiftMailer and RFC 1341