All notable changes to this project will be documented in this file, in reverse chronological order by release.
#213 re-adds support for PHP 5.6 and 7.0; ZF policy is never to bump the major version of a PHP requirement unless the package is bumping major version.
#172 adds the flag connection_time_limit
to the possible Zend\Mail\Transport\Smtp
options.
This flag, when provided as a positive integer, and in conjunction with the use_complete_quit
flag, will
reconnect to the server after the specified interval.
#166 adds functionality for handling References
and In-Reply-To
headers.
#148 adds the optional constructor argument $comment
and the method getComment()
to the class
Zend\Mail\Address
. When a comment is present, toString()
will include it in the representation.
#148 adds the method Zend\Mail\Address::fromString(string $address, $comment = null) : Address
.
The method can be used to generate an instance from a string containing a (name)?<email>
value.
The $comment
argument can be used to associate a comment with the address.
#196 updates how the Headers::fromString()
handles header line continuations
that include a single empty line, ensuring they are concatenated to the
header value.
#165 changes the AbstractAddressList
IDN<->ASCII conversion; it now no longer requires
ext-intl, but instead uses a bundled true/punycode library to accomplish it. This also means that
the conversions will work on any PHP installation.
#211 fixes how the ContentType
header class parses the value it receives. Previously,
it was incorrectly splitting the value on semi-colons that were inside quotes; in now correctly
ignores them.
#204 fixes HeaderWrap::mimeDecodeValue()
behavior when handling a multiline UTF-8
header split across a character. The fix will only work when ext-imap is present, however.
#164 fixes the return value from Zend\Mail\Protocol\Imap::capability()
when no response is
returned from the server; previously, it returned false
, but now correctly returns an empty array.
#148 fixes how Zend\Mail\Header\AbstractAddressList
parses address values, ensuring
that they now retain any address comment discovered to include in the generated Zend\Mail\Address
instances.
#147 fixes how address lists are parsed, expanding the functionality to allow either
,
or ;
delimiters (or both in combination).
To
, as long as Cc
or Bcc
are set.iconv_mime_decode()
, which destroys newlines, rendering
DKIM parsing useless.<
and >
would appear doubled in message
identifiers.<
and >
being part of the email address comment.QUIT
at
__destruct()
and/or end of script execution. Use the use_complete_quit
configuration flag and/or the setuseCompleteQuit($flag)
method to change
the setting (default is to enable this behavior, which was the previous
behavior).Sendmail
transport such that From
and Sender
addresses are passed to
escapeshellarg()
when forming the -f
argument for the sendmail
binary.
While malformed addresses should never reach this class, this extra hardening
helps ensure safety in cases where a developer codes their own
AddressInterface
implementations for these types of addresses.Zend\Mail\Message::getHeaders()
to throw an exception in a case where the
$headers
property is not a Headers
instance.Smtp
protocol to allow an empty or none
value for the SSL configuration
value.Sendmail
transport whereby CLI parameters were not properly trimmed.getSender()
was unintentionally creating a blank Sender
header,
instead of returning null
if none exists, fixing an issue in the SMTP
transport.0
) values for header values.AbstractProtocol
handles stream_socket_client()
errors, ensuring an
exception is thrown with detailed information regarding the failure.Zend\Mail\Header\Sender::fromString()
implementation to more closely follow
the ABNF defined in RFC-5322, specifically to allow addresses in the form
user@domain
(with no TLD).\r\n\t
; prior to this
release, such sequences incorrectly marked a header value invalid.Zend\Mail\Address
to also DNS hostnames as well as local addresses.Zend\Mail\Protocol\SmtpPluginManagerFactory
, for creating and returning an
SmtpPluginManagerFactory
instance.Zend\Mail\ConfigProvider
, which maps the SmtpPluginManager
to the above
factory.Zend\Mail\Module
, which does the same, for zend-mvc contexts.HeaderWrap::canBeEncoded()
to ensure it returns correctly for header lines
containing at least one multibyte character, and particularly when that
character falls at specific locations (per a
reported bug at php.net).SmtpPluginManager
as a zend-servicemanager AbstractPluginManager
, after
reports that making it standalone broke important extensibility use cases
(specifically, replacing existing plugins and/or providing additional plugins
could only be managed with significant code changes).SmtpPluginManager
to implement container-interop's
ContainerInterface
instead of extending from AbstractPluginManager
.
Usage remains the same, though developers who were adding services
to the plugin manager will need to instead extend it now.ContentType
header to properly handle parameters with encoded values.Sender
header, ensuring it can handle domains that do not
contain a TLD, as well as addresses referencing mailboxes (no domain).