symfony/sendgrid-mailer

Symfony Sendgrid Mailer Bridge

Installs: 10 322 321

Dependents: 18

Suggesters: 11

Security: 0

Stars: 68

Watchers: 3

Forks: 11

Type:symfony-mailer-bridge

pkg:composer/symfony/sendgrid-mailer

v8.0.0 2025-09-18 07:50 UTC

This package is auto-updated.

Last update: 2026-01-24 16:20:33 UTC


README

Provides Sendgrid integration for Symfony Mailer.

Configuration example:

# SMTP
MAILER_DSN=sendgrid+smtp://KEY@default?region=REGION

# API
MAILER_DSN=sendgrid+api://KEY@default?region=REGION

where:

  • KEY is your Sendgrid API Key
  • REGION is Sendgrid selected region (default to global)

Webhook

Create a route:

framework:
    webhook:
        routing:
            sendgrid:
                service: mailer.webhook.request_parser.sendgrid
                secret: '!SENDGRID_VALIDATION_SECRET!' # Leave blank if you don't want to use the signature validation

And a consume:

#[\Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer(name: 'sendgrid')]
class SendGridConsumer implements ConsumerInterface
{
    public function consume(RemoteEvent|MailerDeliveryEvent $event): void
    {
        // your code
    }
}

Suppression Groups

Create an e-mail and add the SuppressionGroupHeader:

use Symfony\Component\Mailer\Bridge\Sendgrid\Header\SuppressionGroupHeader;
// [...]
$email = new Email();
$email->getHeaders()->add(new SuppressionGroupHeader(GROUP_ID, GROUPS_TO_DISPLAY));

where:

  • GROUP_ID is your Sendgrid suppression group ID
  • GROUPS_TO_DISPLAY_ID is an array of the Sendgrid suppression group IDs presented to the user

Scheduling

When using the API transport (with a sendgrid+api DSN), you can schedule your emails by providing a \DateTimeInterface object in a Symfony\Component\Mime\Header\DateHeader named Send-At.

$email = new \Symfony\Component\Mime\Email();
$email->getHeaders()->addDateHeader('Send-At', new \DateTimeImmutable('+3 hours'));

It will be mapped to the send_at parameter of the [POST] /mail/send API endpoint

Resources