You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I just found that mail() function does not generate the proper error that can be handled by handleMailErrors() method ("Temporary error handler for PHP native mail()" as pointed in the phpdoc). I have an msmtp as email agent with following settings in php.ini:
As I see, there is a conflict between --read-envelope-from option of msmtp and -f'[email protected]' parameter of mail function. So, mail function returns false in this case.
But this code does not handle the error as expected. The breakpoint in handleMailErrors method does not activated when error occurs (I have PHP 7.2.19 & PHPStorm 2019.1.3).
I found that error_get_last() function may help in this case.
In addition I think we should not throw an exception if $result is true.
So, I suppose, the final code for mailHandler should be the following:
public function mailHandler($to, $subject, $message, $headers, $parameters)
{
if ($parameters === null) {
$result = mail($to, $subject, $message, $headers);
} else {
$result = mail($to, $subject, $message, $headers, $parameters);
}
if (!$result) {
$errstr = error_get_last()['message'];
if (empty($errstr)) {
$errstr = 'Unknown error';
}
throw new Exception\RuntimeException('Unable to send mail: ' . $errstr);
}
}
Sorry, my qualification is not enough to complete all items you want to see here (regression test, CHANGELOG.md, etc.). But I hope my point of view may be useful.
Hi, guys.
I just found that
mail()
function does not generate the proper error that can be handled byhandleMailErrors()
method ("Temporary error handler for PHP native mail()" as pointed in the phpdoc). I have an msmtp as email agent with following settings inphp.ini
:I have an error in
\Zend\Mail\Transport\Sendmail::mailHandler
ifin
As I see, there is a conflict between
--read-envelope-from
option ofmsmtp
and-f'[email protected]'
parameter ofmail
function. So,mail
function returnsfalse
in this case.But this code does not handle the error as expected. The breakpoint in
handleMailErrors
method does not activated when error occurs (I have PHP 7.2.19 & PHPStorm 2019.1.3).I found that
error_get_last()
function may help in this case.In addition I think we should not throw an exception if
$result
istrue
.So, I suppose, the final code for
mailHandler
should be the following:Sorry, my qualification is not enough to complete all items you want to see here (regression test, CHANGELOG.md, etc.). But I hope my point of view may be useful.
Have a good day!
Originally posted by @flancer64 at zendframework/zend-mail#229
The text was updated successfully, but these errors were encountered: