From 8500308631f2c861808307aa1050a9ef555f8f1d Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 14:35:50 +0200 Subject: [PATCH 1/8] Issue #4573 - close mailer connection after sending message - fix return statements and related phpdoc --- src/Illuminate/Mail/Mailer.php | 35 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index e46f23b0fefd..64040a8851fb 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -152,12 +152,10 @@ public function plain($view, array $data, $callback) * @param string|array $view * @param array $data * @param \Closure|string $callback - * @return void + * @return int */ public function send($view, array $data, $callback) { - $this->forceReconnection(); - // First we need to parse the view, which could either be a string or an array // containing both an HTML and plain text versions of the view which should // be used when sending an e-mail. We will extract both of them out here. @@ -303,18 +301,6 @@ protected function getQueuedCallable(array $data) return $data['callback']; } - /** - * Force the transport to re-connect. - * - * This will prevent errors in daemon queue situations. - * - * @return void - */ - protected function forceReconnection() - { - $this->getSwiftMailer()->getTransport()->stop(); - } - /** * Add the content to a given message. * @@ -383,7 +369,7 @@ protected function parseView($view) * Send a Swift Message instance. * * @param \Swift_Message $message - * @return void + * @return int */ protected function sendSwiftMessage($message) { @@ -391,24 +377,33 @@ protected function sendSwiftMessage($message) $this->events->fire('mailer.sending', [$message]); } + $result = 0; + if (! $this->pretending) { - return $this->swift->send($message, $this->failedRecipients); + $result = $this->getSwiftMailer()->send($message, $this->failedRecipients); + $this->getSwiftMailer()->getTransport()->stop(); } elseif (isset($this->logger)) { - $this->logMessage($message); + $result = $this->logMessage($message); } + + return $result; } /** * Log that a message was sent. + * Return the number of recipients, pretending everything worked just fine * * @param \Swift_Message $message - * @return void + * @return int */ protected function logMessage($message) { - $emails = implode(', ', array_keys((array) $message->getTo())); + $recipients = (array)$message->getTo(); + $emails = implode(', ', array_keys($recipients)); $this->logger->info("Pretending to mail message to: {$emails}"); + + return count($recipients); } /** From 2d3c63dff858840701d2b2cc8083c7522f4d71e9 Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 15:04:33 +0200 Subject: [PATCH 2/8] Minor Fixed code style according to StyleCI --- src/Illuminate/Mail/Mailer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index 64040a8851fb..53de78459732 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -391,14 +391,14 @@ protected function sendSwiftMessage($message) /** * Log that a message was sent. - * Return the number of recipients, pretending everything worked just fine + * Return the number of recipients, pretending everything worked just fine. * * @param \Swift_Message $message * @return int */ protected function logMessage($message) { - $recipients = (array)$message->getTo(); + $recipients = (array) $message->getTo(); $emails = implode(', ', array_keys($recipients)); $this->logger->info("Pretending to mail message to: {$emails}"); From 777507d2a04f90e607474ca61566bc1b97814e81 Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 15:31:13 +0200 Subject: [PATCH 3/8] Revert return type fixes --- src/Illuminate/Mail/Mailer.php | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index 53de78459732..6304c2930954 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -152,7 +152,7 @@ public function plain($view, array $data, $callback) * @param string|array $view * @param array $data * @param \Closure|string $callback - * @return int + * @return void */ public function send($view, array $data, $callback) { @@ -369,7 +369,7 @@ protected function parseView($view) * Send a Swift Message instance. * * @param \Swift_Message $message - * @return int + * @return void */ protected function sendSwiftMessage($message) { @@ -377,33 +377,26 @@ protected function sendSwiftMessage($message) $this->events->fire('mailer.sending', [$message]); } - $result = 0; - if (! $this->pretending) { $result = $this->getSwiftMailer()->send($message, $this->failedRecipients); $this->getSwiftMailer()->getTransport()->stop(); + return $result; } elseif (isset($this->logger)) { - $result = $this->logMessage($message); + $this->logMessage($message); } - - return $result; } /** * Log that a message was sent. - * Return the number of recipients, pretending everything worked just fine. * * @param \Swift_Message $message - * @return int + * @return void */ protected function logMessage($message) { - $recipients = (array) $message->getTo(); - $emails = implode(', ', array_keys($recipients)); + $emails = implode(', ', array_keys((array) $message->getTo())); $this->logger->info("Pretending to mail message to: {$emails}"); - - return count($recipients); } /** From cadbc033826082d071b7db5c54f7c3f53fc3e1cc Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 15:34:25 +0200 Subject: [PATCH 4/8] Minor fixed code style according to StyleCI --- src/Illuminate/Mail/Mailer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index 6304c2930954..a3ebb33db8fd 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -380,6 +380,7 @@ protected function sendSwiftMessage($message) if (! $this->pretending) { $result = $this->getSwiftMailer()->send($message, $this->failedRecipients); $this->getSwiftMailer()->getTransport()->stop(); + return $result; } elseif (isset($this->logger)) { $this->logMessage($message); From e54da9a83dd504fa64e38c399f7888be5464d9dc Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 15:37:22 +0200 Subject: [PATCH 5/8] Minor StyleCI still not happy... :-( --- src/Illuminate/Mail/Mailer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index a3ebb33db8fd..2f6f6295fa97 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -380,7 +380,7 @@ protected function sendSwiftMessage($message) if (! $this->pretending) { $result = $this->getSwiftMailer()->send($message, $this->failedRecipients); $this->getSwiftMailer()->getTransport()->stop(); - + return $result; } elseif (isset($this->logger)) { $this->logMessage($message); From d6c259eaf8cf957430af1cac7ff94eeeb14d9a61 Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 16:08:58 +0200 Subject: [PATCH 6/8] - Reverted removal of Mailer::forceReconnection() method - wrap try-finally around swift->send(); transport->stop(); --- src/Illuminate/Mail/Mailer.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index 2f6f6295fa97..fe384797cf4c 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -301,6 +301,18 @@ protected function getQueuedCallable(array $data) return $data['callback']; } + /** + * Force the transport to re-connect. + * + * This will prevent errors in daemon queue situations. + * + * @return void + */ + protected function forceReconnection() + { + $this->getSwiftMailer()->getTransport()->stop(); + } + /** * Add the content to a given message. * @@ -378,8 +390,11 @@ protected function sendSwiftMessage($message) } if (! $this->pretending) { - $result = $this->getSwiftMailer()->send($message, $this->failedRecipients); - $this->getSwiftMailer()->getTransport()->stop(); + try { + $result = $this->swift->send($message, $this->failedRecipients); + } finally { + $this->getSwiftMailer()->getTransport()->stop(); + } return $result; } elseif (isset($this->logger)) { From 201749c9c0e5c894a63ba20472ccdfce5c1b7727 Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 16:22:44 +0200 Subject: [PATCH 7/8] Minor: remove temporary result variable --- src/Illuminate/Mail/Mailer.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index fe384797cf4c..937b4875f9f5 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -391,12 +391,10 @@ protected function sendSwiftMessage($message) if (! $this->pretending) { try { - $result = $this->swift->send($message, $this->failedRecipients); + return $this->swift->send($message, $this->failedRecipients); } finally { $this->getSwiftMailer()->getTransport()->stop(); } - - return $result; } elseif (isset($this->logger)) { $this->logMessage($message); } From 7a54388d5cea0b0c5c2f131bd98d43be233071fb Mon Sep 17 00:00:00 2001 From: Benjamin Schanzel Date: Tue, 17 May 2016 23:27:59 +0200 Subject: [PATCH 8/8] Use private field instead of public getter for swift mailer --- src/Illuminate/Mail/Mailer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Mail/Mailer.php b/src/Illuminate/Mail/Mailer.php index 937b4875f9f5..e0bd9152e999 100755 --- a/src/Illuminate/Mail/Mailer.php +++ b/src/Illuminate/Mail/Mailer.php @@ -393,7 +393,7 @@ protected function sendSwiftMessage($message) try { return $this->swift->send($message, $this->failedRecipients); } finally { - $this->getSwiftMailer()->getTransport()->stop(); + $this->swift->getTransport()->stop(); } } elseif (isset($this->logger)) { $this->logMessage($message);