Skip to content

Symfony bundle for SendGrid. Utilizes the SendGrid PHP Library https://github.com/sendgrid/sendgrid-php to make it compatible with SwiftMailer

License

Notifications You must be signed in to change notification settings

expertcoder/SwiftmailerSendGridBundle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Freelance Banner

SwiftmailerSendGridBundle

Latest Version Software License Build Status

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

Installation

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

Applications that don't use Symfony Flex

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)

Symfony 3

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'

Tests

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 do sh 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.

Important !

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