@@ -1370,6 +1370,78 @@ key but not a certificate::
1370
1370
->toArray()
1371
1371
);
1372
1372
1373
+ Signing Messages Globally
1374
+ .........................
1375
+
1376
+ Instead of creating a signer instance for every email, you can configure a global signer
1377
+ that automatically applies to all outgoing messages. This approach reduces repetition
1378
+ and centralizes your configuration for both DKIM and S/MIME signing.
1379
+
1380
+ .. configuration-block ::
1381
+
1382
+ .. code-block :: yaml
1383
+
1384
+ # config/packages/mailer.yaml
1385
+ framework :
1386
+ mailer :
1387
+ dkim_signer :
1388
+ key : ' file://%kernel.project_dir%/var/certificates/dkim.pem'
1389
+ domain : ' symfony.com'
1390
+ select : ' s1'
1391
+ smime_signer :
1392
+ key : ' %kernel.project_dir%/var/certificates/smime.key'
1393
+ certificate : ' %kernel.project_dir%/var/certificates/smime.crt'
1394
+ passphrase : ' '
1395
+
1396
+ .. code-block :: xml
1397
+
1398
+ <!-- config/packages/mailer.xml -->
1399
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
1400
+ <container xmlns =" http://symfony.com/schema/dic/services"
1401
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
1402
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
1403
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
1404
+ https://symfony.com/schema/dic/services/services-1.0.xsd
1405
+ http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd" >
1406
+
1407
+ <!-- ... -->
1408
+ <framework : config >
1409
+ <framework : mailer >
1410
+ <framework : dkim-signer >
1411
+ <framework : key >file://%kernel.project_dir%/var/certificates/dkim.pem</framework : key >
1412
+ <framework : domain >symfony.com</framework : domain >
1413
+ <framework : select >s1</framework : select >
1414
+ </framework : dkim-signer >
1415
+ <framework : smime-signer >
1416
+ <framework : key >%kernel.project_dir%/var/certificates/smime.pem</framework : key >
1417
+ <framework : certificate >%kernel.project_dir%/var/certificates/smime.crt</framework : certificate >
1418
+ <framework : passphrase ></framework : passphrase >
1419
+ </framework : smime-signer >
1420
+ </framework : mailer >
1421
+ </framework : config >
1422
+ </container >
1423
+
1424
+ .. code-block :: php
1425
+
1426
+ // config/packages/mailer.php
1427
+ use Symfony\Config\FrameworkConfig;
1428
+
1429
+ return static function (FrameworkConfig $framework): void {
1430
+ $mailer = $framework->mailer();
1431
+ $mailer->dsn('%env(MAILER_DSN)%');
1432
+ $mailer->dkimSigner()
1433
+ ->key('file://%kernel.project_dir%/var/certificates/dkim.pem')
1434
+ ->domain('symfony.com')
1435
+ ->select('s1');
1436
+
1437
+ $mailer->smimeSigner()
1438
+ ->key('%kernel.project_dir%/var/certificates/smime.key')
1439
+ ->certificate('%kernel.project_dir%/var/certificates/smime.crt')
1440
+ ->passphrase('')
1441
+ ;
1442
+ };
1443
+
1444
+
1373
1445
Encrypting Messages
1374
1446
~~~~~~~~~~~~~~~~~~~
1375
1447
@@ -1411,6 +1483,57 @@ and it will select the appropriate certificate depending on the ``To`` option::
1411
1483
$firstEncryptedEmail = $encrypter->encrypt($firstEmail);
1412
1484
$secondEncryptedEmail = $encrypter->encrypt($secondEmail);
1413
1485
1486
+
1487
+ Encrypting Messages Globally
1488
+ ............................
1489
+
1490
+ Similarly, you can avoid instantiating a new encrypter for every email by setting up a
1491
+ global S/MIME encrypter. With this configuration, the encrypter is automatically
1492
+ applied to all emails you send.
1493
+
1494
+ .. configuration-block ::
1495
+
1496
+ .. code-block :: yaml
1497
+
1498
+ # config/packages/mailer.yaml
1499
+ framework :
1500
+ mailer :
1501
+ smime_encrypter :
1502
+ certificate : ' %kernel.project_dir%/var/certificates/smime.crt'
1503
+
1504
+ .. code-block :: xml
1505
+
1506
+ <!-- config/packages/mailer.xml -->
1507
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
1508
+ <container xmlns =" http://symfony.com/schema/dic/services"
1509
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
1510
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
1511
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services
1512
+ https://symfony.com/schema/dic/services/services-1.0.xsd
1513
+ http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd" >
1514
+
1515
+ <!-- ... -->
1516
+ <framework : config >
1517
+ <framework : mailer >
1518
+ <framework : smime-encrypter >
1519
+ <framework : certificate >%kernel.project_dir%/var/certificates/smime.crt</framework : certificate >
1520
+ </framework : smime-encrypter >
1521
+ </framework : mailer >
1522
+ </framework : config >
1523
+ </container >
1524
+
1525
+ .. code-block :: php
1526
+
1527
+ // config/packages/mailer.php
1528
+ use Symfony\Config\FrameworkConfig;
1529
+
1530
+ return static function (FrameworkConfig $framework): void {
1531
+ $mailer = $framework->mailer();
1532
+ $mailer->smimeEncrypter()
1533
+ ->certificate('%kernel.project_dir%/var/certificates/smime.crt')
1534
+ ;
1535
+ };
1536
+
1414
1537
.. _multiple-email-transports :
1415
1538
1416
1539
Multiple Email Transports
0 commit comments