From bd0ed331797717ff9db63216df550d95674ba248 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 18 Feb 2017 19:13:08 -0500 Subject: Add Reply-To header to emails sent from Kanboard --- app/Core/Mail/Client.php | 41 +++++++++++++++++++++++++++--------- app/Core/Mail/ClientInterface.php | 15 +++++++------ app/Core/Mail/Transport/Mail.php | 28 ++++++++++++++---------- app/Core/Mail/Transport/Sendmail.php | 4 ++-- app/Core/Mail/Transport/Smtp.php | 8 +++---- 5 files changed, 62 insertions(+), 34 deletions(-) (limited to 'app/Core/Mail') diff --git a/app/Core/Mail/Client.php b/app/Core/Mail/Client.php index ee3bdead..334f8816 100644 --- a/app/Core/Mail/Client.php +++ b/app/Core/Mail/Client.php @@ -9,7 +9,7 @@ use Kanboard\Core\Base; /** * Mail Client * - * @package mail + * @package Kanboard\Core\Mail * @author Frederic Guillot */ class Client extends Base @@ -38,30 +38,35 @@ class Client extends Base * Send a HTML email * * @access public - * @param string $email - * @param string $name + * @param string $recipientEmail + * @param string $recipientName * @param string $subject * @param string $html * @return Client */ - public function send($email, $name, $subject, $html) + public function send($recipientEmail, $recipientName, $subject, $html) { - if (! empty($email)) { - $this->queueManager->push(EmailJob::getInstance($this->container) - ->withParams($email, $name, $subject, $html, $this->getAuthor()) - ); + if (! empty($recipientEmail)) { + $this->queueManager->push(EmailJob::getInstance($this->container)->withParams( + $recipientEmail, + $recipientName, + $subject, + $html, + $this->getAuthorName(), + $this->getAuthorEmail() + )); } return $this; } /** - * Get email author + * Get author name * * @access public * @return string */ - public function getAuthor() + public function getAuthorName() { $author = 'Kanboard'; @@ -72,6 +77,22 @@ class Client extends Base return $author; } + /** + * Get author email + * + * @access public + * @return string + */ + public function getAuthorEmail() + { + if ($this->userSession->isLogged()) { + $userData = $this->userSession->getAll(); + return ! empty($userData['email']) ? $userData['email'] : ''; + } + + return ''; + } + /** * Get mail transport instance * diff --git a/app/Core/Mail/ClientInterface.php b/app/Core/Mail/ClientInterface.php index 66263a98..3bfa32d3 100644 --- a/app/Core/Mail/ClientInterface.php +++ b/app/Core/Mail/ClientInterface.php @@ -5,7 +5,7 @@ namespace Kanboard\Core\Mail; /** * Mail Client Interface * - * @package mail + * @package Kanboard\Core\Mail * @author Frederic Guillot */ interface ClientInterface @@ -14,11 +14,12 @@ interface ClientInterface * Send a HTML email * * @access public - * @param string $email - * @param string $name - * @param string $subject - * @param string $html - * @param string $author + * @param string $recipientEmail + * @param string $recipientName + * @param string $subject + * @param string $html + * @param string $authorName + * @param string $authorEmail */ - public function sendEmail($email, $name, $subject, $html, $author); + public function sendEmail($recipientEmail, $recipientName, $subject, $html, $authorName, $authorEmail = ''); } diff --git a/app/Core/Mail/Transport/Mail.php b/app/Core/Mail/Transport/Mail.php index c99cc8ba..0d819f77 100644 --- a/app/Core/Mail/Transport/Mail.php +++ b/app/Core/Mail/Transport/Mail.php @@ -12,7 +12,7 @@ use Kanboard\Core\Mail\ClientInterface; /** * PHP Mail Handler * - * @package transport + * @package Kanboard\Core\Mail\Transport * @author Frederic Guillot */ class Mail extends Base implements ClientInterface @@ -21,20 +21,26 @@ class Mail extends Base implements ClientInterface * Send a HTML email * * @access public - * @param string $email - * @param string $name - * @param string $subject - * @param string $html - * @param string $author + * @param string $recipientEmail + * @param string $recipientName + * @param string $subject + * @param string $html + * @param string $authorName + * @param string $authorEmail */ - public function sendEmail($email, $name, $subject, $html, $author) + public function sendEmail($recipientEmail, $recipientName, $subject, $html, $authorName, $authorEmail = '') { try { $message = Swift_Message::newInstance() ->setSubject($subject) - ->setFrom(array($this->helper->mail->getMailSenderAddress() => $author)) - ->setTo(array($email => $name)) - ->setBody($html, 'text/html'); + ->setFrom($this->helper->mail->getMailSenderAddress(), $authorName) + ->setTo(array($recipientEmail => $recipientName)); + + if (! empty($authorEmail)) { + $message->setReplyTo($authorEmail); + } + + $message->setBody($html, 'text/html'); Swift_Mailer::newInstance($this->getTransport())->send($message); } catch (Swift_TransportException $e) { @@ -46,7 +52,7 @@ class Mail extends Base implements ClientInterface * Get SwiftMailer transport * * @access protected - * @return \Swift_Transport|\Swift_MailTransport|\Swift_SmtpTransport|\Swift_SendmailTransport + * @return \Swift_Transport */ protected function getTransport() { diff --git a/app/Core/Mail/Transport/Sendmail.php b/app/Core/Mail/Transport/Sendmail.php index 039be705..a1a2cbd6 100644 --- a/app/Core/Mail/Transport/Sendmail.php +++ b/app/Core/Mail/Transport/Sendmail.php @@ -7,7 +7,7 @@ use Swift_SendmailTransport; /** * PHP Mail Handler * - * @package transport + * @package Kanboard\Core\Mail\Transport * @author Frederic Guillot */ class Sendmail extends Mail @@ -16,7 +16,7 @@ class Sendmail extends Mail * Get SwiftMailer transport * * @access protected - * @return \Swift_Transport|\Swift_MailTransport|\Swift_SmtpTransport|\Swift_SendmailTransport + * @return \Swift_Transport */ protected function getTransport() { diff --git a/app/Core/Mail/Transport/Smtp.php b/app/Core/Mail/Transport/Smtp.php index 815dde5d..7338a81e 100644 --- a/app/Core/Mail/Transport/Smtp.php +++ b/app/Core/Mail/Transport/Smtp.php @@ -7,7 +7,7 @@ use Swift_SmtpTransport; /** * PHP Mail Handler * - * @package transport + * @package Kanboard\Core\Mail\Transport * @author Frederic Guillot */ class Smtp extends Mail @@ -16,7 +16,7 @@ class Smtp extends Mail * Get SwiftMailer transport * * @access protected - * @return \Swift_Transport|\Swift_MailTransport|\Swift_SmtpTransport|\Swift_SendmailTransport + * @return \Swift_Transport */ protected function getTransport() { @@ -29,8 +29,8 @@ class Smtp extends Mail $transport->setStreamOptions(array( 'ssl' => array( 'allow_self_signed' => true, - 'verify_peer' => false, - 'verify_peer_name' => false, + 'verify_peer' => false, + 'verify_peer_name' => false, ) )); } -- cgit v1.2.3