Новое в Symfony 4.4: Подпись и шифрование сообщений электронной почты

Symfony 4.4 будет выпущен в ноябре 2019 года. Это первая статья серии, в которой показаны наиболее важные новые функции, представленные в этой версии Symfony.

Новые компоненты Mailer и Mime были введены в Symfony 4.3 для замены предыдущего решения, основанного на SwiftMailer. В Symfony 4.4 улучшили их с помощью новых функций, позволяющих подписывать и шифровать почтовые сообщения с использованием стандарта S/MIME.

Подпись сообщения улучшает его целостность, поскольку оно включает цифровую подпись хеша всего содержимого электронной почты, гарантируя, что исходное содержимое не было изменено:

use Symfony\Component\Mime\Crypto\SMimeSigner;
use Symfony\Component\Mime\Email;

$email = (new Email())->from('...')->to('...')->html('...');

$signer = new SMimeSigner('/path/to/certificate.crt', '/path/to/certificate-private-key.key');
$signedEmail = $signer->sign($email);
// now use the Mailer to send this $signedEmail instead of the original $email

Шифрование сообщения повышает его безопасность, поскольку его содержимое, включая любые вложения, может быть прочитано, только если у вас есть закрытый ключ, связанный с открытым ключом, который используется для их шифрования:

use Symfony\Component\Mime\Crypto\SMimeEncrypter;
use Symfony\Component\Mime\Email;

$email = (new Email())->from('...')->to('...')->html('...');

$encrypter = new SMimeEncrypter('/path/to/certificate.crt');
$encryptedEmail = $encrypter->encrypt($email);
// now use the Mailer to send this $encryptedEmail instead of the original $email

Прочтите статью «Подпись и шифрование сообщений» в официальной документации Symfony, чтобы узнать больше об этой функции.