Symfony
Learn how to send your first email using the Symfony Resend Mailer Bridge.
Prerequisites
To get the most out of this guide, you will need to:
1. Install
Get the Resend Mailer Bridge package.
composer require symfony/resend-mailer
If your application relies on Resend webhook events, you should also install the Symfony Webhook Component.
composer require symfony/webhook
2. Configuring Mailer
In your .env.local
file, which you can create if needed, add the following:
MAILER_DSN=resend+api://API_KEY@default
MAILER_RESEND_SECRET=SIGNING_SECRET
Replace API_KEY
with your Resend API key, and SIGNING_SECRET
with your webhook secret, which can be retrieved from the Resend dashboard after creating a new webhook endpoint (see below).
3. Send your first email
In a controller, inject the Mailer
:
public function __construct(
private readonly MailerInterface $mailer,
) {
}
In a controller action, use the $this->mailer
to send your email:
$this->mailer->send(
(new Email())
->from('Acme <onboarding@resend.dev>')
->to('delivered@resend.dev')
->subject('Hello world')
->html('<strong>it works!</strong>')
);
Learn more about sending emails with Mailer Component in Symfony’s documentation.
4. Receive and handle webhooks
Thanks to the Webhook Component, you can create a webhook listener.
#[AsRemoteEventConsumer('mailer_resend')]
readonly class ResendWebhookListener implements ConsumerInterface
{
public function __construct(
#[Autowire(param: 'kernel.project_dir')] private string $projectDir,
) {
}
public function consume(RemoteEvent $event): void
{
if ($event instanceof MailerDeliveryEvent) {
$this->handleMailDelivery($event);
} elseif ($event instanceof MailerEngagementEvent) {
$this->handleMailEngagement($event);
} else {
// This is not an email event
return;
}
}
private function handleMailDelivery(MailerDeliveryEvent $event): void
{
// Todo
}
private function handleMailEngagement(MailerEngagementEvent $event): void
{
// Todo
}
}
Bind your listener to the Webhook routing config:
framework:
webhook:
routing:
mailer_resend:
service: 'mailer.webhook.request_parser.resend'
secret: '%env(MAILER_RESEND_SECRET)%'
Next, register your application’s webhook endpoint URL (example: https://{app_domain}/webhook/mailer_resend
) in the Resend Dashboard:
5. Try it yourself
Symfony Example
See the full source code.
Was this page helpful?