Fix fatal error when trying to send an email with no To: address

https://www.xetown.com/qna/743677
This commit is contained in:
Kijin Sung 2017-09-24 20:28:38 +09:00
parent 12048bf4d0
commit 5138a765d4

View file

@ -15,13 +15,17 @@ class Advanced_MailerController extends Advanced_Mailer
{ {
$config = $this->getConfig(); $config = $this->getConfig();
$first_recipient = array_first_key($mail->message->getTo()); $recipients = $mail->message->getTo() ?: array();
if ($exception_driver = $this->getSendingMethodForEmailAddress($first_recipient, $config)) if ($recipients)
{ {
$driver_class = '\\Rhymix\\Framework\\Drivers\Mail\\' . $exception_driver; $first_recipient = array_first_key($recipients);
if (class_exists($driver_class)) if ($exception_driver = $this->getSendingMethodForEmailAddress($first_recipient, $config))
{ {
$mail->driver = $driver_class::getInstance(config("mail.$exception_driver")); $driver_class = '\\Rhymix\\Framework\\Drivers\Mail\\' . $exception_driver;
if (class_exists($driver_class))
{
$mail->driver = $driver_class::getInstance(config("mail.$exception_driver"));
}
} }
} }
@ -41,8 +45,9 @@ class Advanced_MailerController extends Advanced_Mailer
} }
else else
{ {
$original_sender_email = array_first_key($mail->message->getFrom()); $sender = $mail->message->getFrom();
$original_sender_name = array_first($mail->message->getFrom()); $original_sender_email = $sender ? array_first_key($sender) : null;
$original_sender_name = $sender ? array_first($sender) : null;
if ($original_sender_email !== config('mail.default_from')) if ($original_sender_email !== config('mail.default_from'))
{ {
$mail->setFrom(config('mail.default_from'), $original_sender_name ?: config('mail.default_name')); $mail->setFrom(config('mail.default_from'), $original_sender_name ?: config('mail.default_name'));