I am trying to configure sending emails with Symfony mailer component. It perfectly works with one DNS (which I have in my .env file).
But I want to have 2 of them for example.
How can I configure it? I haven't found anything sensible in the documentation.
Here is my mailer.YAML
framework:
mailer:
dsn: '%env(MAILER_DSN)%'
I would like to have something like:
framework:
mailer_default:
dsn: '%env(MAILER_DSN1)%'
mailer_second:
dsn: '%env(MAILER_DSN2)%'
But such an option is not possible, unfortunately.
My Answer:
You can achieve this by creating multiple mailer services in your Symfony configuration. Here's an example of how you can configure multiple SMTP servers in Symfony mailer:
1. Define your mailer services in services.yaml:
yaml
services:
_defaults:
autowire: true
autoconfigure: true
App\Mailer\DefaultMailer:
arguments:
$dsn: '%env(MAILER_DSN1)%'
App\Mailer\SecondMailer:
arguments:
$dsn: '%env(MAILER_DSN2)%'
2. Create your mailer classes that extend Symfony\Component\Mailer\Mailer:
DefaultMailer.php
php
namespace App\Mailer;
use Symfony\Component\Mailer\Mailer;
class DefaultMailer extends Mailer
{
// Add any custom methods or configurations specific to this mailer
}
SecondMailer.php
php
namespace App\Mailer;
use Symfony\Component\Mailer\Mailer;
class SecondMailer extends Mailer
{
// Add any custom methods or configurations specific to this mailer
}
3. Use the appropriate mailer service in your controllers or services:
php
use App\Mailer\DefaultMailer;
use App\Mailer\SecondMailer;
// Use the default mailer
$defaultMailer = $this->get(DefaultMailer::class);
$defaultMailer->send($email);
// Use the second mailer
$secondMailer = $this->get(SecondMailer::class);
$secondMailer->send($email);
By creating separate mailer services for each SMTP server, you can easily switch between them in your code and configure them independently. This approach allows for more flexibility and customization in handling multiple SMTP servers in Symfony mailer.
Rate this post
5 of 5 based on 2869 votesComments