- Add a
rate_limiteroption to mailer transports - Add DSN param
timeoutto configure the connect/read/write timeout of SMTP transports - Reorder EsmtpTransport authenticators to prefer PLAIN over obsolete LOGIN
- Add
InMemorySmimeCertificateRepositoryto provide recipient S/MIME certificates from a static map - Add a configurable behavior to
SmimeEncryptedMessageListenerwhen a recipient has no certificate (send_unencrypted,fail,encrypt,skip), overridable per message via theX-SMime-Encryptheader - Deprecate sending an S/MIME message unencrypted when a recipient has no certificate (the
send_unencryptedbehavior); it will throw in 9.0, usefail,encryptorskipinstead - Add a
$encryptForSenderargument toSmimeEncryptedMessageListenerto also encrypt for the sender, so it can read the messages it sent - Add
PRIORITYconstants toDkimSignedMessageListener,SmimeSignedMessageListenerandSmimeEncryptedMessageListenerand order encryption after signing so signed-and-encrypted messages compose deterministically - Add
PgpMimeSignedMessageListenerandPgpMimeEncryptedMessageListener - Add
InMemoryPgpPublicKeyRepositoryto provide recipient PGP public keys from a static map - Add a configurable behavior to
PgpMimeEncryptedMessageListenerwhen a recipient has no key (fail,encrypt,skip), overridable per message via theX-Pgp-Encryptheader - Add
TrackingHeaderfor per-message open/click tracking and map it to provider-specific settings in the AhaSend, Azure, Brevo, Infobip, Mailchimp/Mandrill, MailerSend, Mailgun, Mailjet, Postmark and Sendgrid transports
- Remove
TransportFactoryTestCase, extendAbstractTransportFactoryTestCaseinstead
- Add
logger(constructor) property toRoundRobinTransport
- Add DSN param
retry_periodto override default email transport retry period - Add
Dsn::getBooleanOption() - Add DSN param
source_ipto allow binding to a (specific) IPv4 or IPv6 address. - Add DSN param
require_tlsto enforce use of TLS/STARTTLS - Add
DkimSignedMessageListener,SmimeEncryptedMessageListener, andSmimeSignedMessageListener
-
Deprecate
TransportFactoryTestCase, extendAbstractTransportFactoryTestCaseinsteadThe
testIncompleteDsnException()test is no longer provided by default. If you make use of it by implementing theincompleteDsnProvider()data providers, you now need to use theIncompleteDsnTestTrait. -
Make
TransportFactoryTestCasecompatible with PHPUnit 10+ -
Support unicode email addresses such as "dømi@dømi.example"
- Dispatch Postmark's "406 - Inactive recipient" API error code as a
PostmarkDeliveryEventinstead of throwing an exception - Add DSN param
auto_tlsto disable automatic STARTTLS - Add support for allowing some users even if
recipientsis defined inEnvelopeListener
- Remove the OhMySmtp bridge in favor of the MailPace bridge
- Add DSN parameter
peer_fingerprintto verify TLS certificate fingerprint - Change the default port for the
mailjet+smtptransport from 465 to 587
- Add
MessageEvent::reject()to allow rejecting an email before sending it - Change the default port for the
mailgun+smtptransport from 465 to 587 - Add
$authenticatorsparameter inEsmtpTransportconstructor andEsmtpTransport::setAuthenticators()to allow overriding of default eSMTP authenticators
- [BC BREAK] The following data providers for
TransportFactoryTestCaseare now static:supportsProvider(),createProvider(),unsupportedSchemeProvider()andincompleteDsnProvider()
- Add a
mailer:testcommand - Add
SentMessageEventandFailedMessageEventevents
- Make
start()andstop()methods public onSmtpTransport - Improve extensibility of
EsmtpTransport
- The
HttpTransportExceptionclass takes a string at first argument
- Enable the mailer to operate on any PSR-14-compatible event dispatcher
- added the
mailermonolog channel and set it on all transport definitions
- added
NativeTransportFactoryto configure a transport based on php.ini settings - added
local_domain,restart_threshold,restart_threshold_sleepandping_thresholdoptions forsmtp - added
commandoption forsendmail
-
[BC BREAK] changed the
NullTransportDSN fromsmtp://nulltonull://null -
[BC BREAK] renamed
SmtpEnvelopetoEnvelope, renamedDelayedSmtpEnvelopetoDelayedEnvelope -
[BC BREAK] changed the syntax for failover and roundrobin DSNs
Before:
dummy://a || dummy://b (for failover) dummy://a && dummy://b (for roundrobin)
After:
failover(dummy://a dummy://b) roundrobin(dummy://a dummy://b)
-
added support for multiple transports on a
Mailerinstance -
[BC BREAK] removed the
auth_modeDSN option (it is now always determined automatically) -
STARTTLS cannot be enabled anymore (it is used automatically if TLS is disabled and the server supports STARTTLS)
-
[BC BREAK] Removed the
encryptionDSN option (usesmtpsinstead) -
Added support for the
smtpsprotocol (does the same as usingsmtpand port465) -
Added PHPUnit constraints
-
Added
MessageDataCollector -
Added
MessageEventsandMessageLoggerListenerto allow collecting sent emails -
[BC BREAK]
TransportInterfacehas a new__toString()method -
[BC BREAK] Classes
AbstractApiTransportandAbstractHttpTransportmoved underTransportsub-namespace. -
[BC BREAK] Transports depend on
Symfony\Contracts\EventDispatcher\EventDispatcherInterfaceinstead ofSymfony\Component\EventDispatcher\EventDispatcherInterface. -
Added possibility to register custom transport for dsn by implementing
Symfony\Component\Mailer\Transport\TransportFactoryInterfaceand tagging withmailer.transport_factorytag in DI. -
Added
Symfony\Component\Mailer\Test\TransportFactoryTestCaseto ease testing custom transport factories. -
Added
SentMessage::getDebug()andTransportExceptionInterface::getDebugto help debugging -
Made
MessageEventfinal -
add DSN parameter
verify_peerto disable TLS peer verification for SMTP transport
- Added the component.