From 658214ba8190a7498c37e8a14a45c0fc7b08e6c0 Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Tue, 19 Sep 2023 10:14:28 +0000 Subject: [PATCH] always set Return-Path and drop default Reply-To, fixes #3023 Closes #3023 Merge request studip/studip!2029 --- lib/classes/ForumBulkMail.php | 3 +-- lib/classes/StudipMail.class.php | 17 +++++++++++++---- lib/messaging.inc.php | 4 +--- lib/phplib/Seminar_Register_Auth.class.php | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/classes/ForumBulkMail.php b/lib/classes/ForumBulkMail.php index bffb9155e0f..3f761941d32 100644 --- a/lib/classes/ForumBulkMail.php +++ b/lib/classes/ForumBulkMail.php @@ -94,8 +94,7 @@ class ForumBulkMail extends messaging $mail->addRecipient($to, get_fullname($user_id), 'Bcc'); } - $mail->setReplyToEmail('') - ->setBodyText($data['text']); + $mail->setBodyText($data['text']); if (mb_strlen($data['reply_to'])) { $mail->setSenderEmail($data['reply_to']); diff --git a/lib/classes/StudipMail.class.php b/lib/classes/StudipMail.class.php index 1ee0db77b77..db68a110378 100644 --- a/lib/classes/StudipMail.class.php +++ b/lib/classes/StudipMail.class.php @@ -69,6 +69,16 @@ class StudipMail return self::$transporter; } + /** + * Gets the configured abuse mail contact + * + * @return string + */ + public static function getAbuseEmail() + { + return $GLOBALS['MAIL_ABUSE'] ?: "abuse@{$mail_localhost}"; + } + /** * convenience method for sending a qick, text based email message * @@ -99,9 +109,8 @@ class StudipMail public static function sendAbuseMessage($subject, $text) { $mail = new StudipMail(); - $abuse = $mail->getReplyToEmail(); + $abuse = self::getAbuseEmail(); return $mail->setSubject($subject) - ->setReplyToEmail('') ->addRecipient($abuse) ->setBodyText($text) ->send(); @@ -109,7 +118,7 @@ class StudipMail /** * sets some default values for sender and reply to from - * configuration settings. The return path is always set to MAIL_ABUSE + * configuration settings. * */ public function __construct($data = null) @@ -117,7 +126,6 @@ class StudipMail $mail_localhost = $GLOBALS['MAIL_LOCALHOST'] ?: $_SERVER['SERVER_NAME']; $this->setSenderEmail($GLOBALS['MAIL_ENV_FROM'] ?: "wwwrun@{$mail_localhost}"); $this->setSenderName($GLOBALS['MAIL_FROM'] ?: 'Stud.IP - ' . Config::get()->UNI_NAME_CLEAN); - $this->setReplyToEmail($GLOBALS['MAIL_ABUSE'] ?: "abuse@{$mail_localhost}"); if ($data) { $this->setData($data); @@ -391,6 +399,7 @@ class StudipMail throw new Exception('no mail transport defined'); } $transporter->ResetMessage(); + $transporter->SetHeader('Return-Path', $this->getSenderEmail()); $transporter->SetEncodedEmailHeader('From', $this->getSenderEmail(), self::quoteString($this->getSenderName())); if($this->getReplyToEmail()){ $transporter->SetEncodedEmailHeader('Reply-To', $this->getReplyToEmail(), self::quoteString($this->getReplyToName())); diff --git a/lib/messaging.inc.php b/lib/messaging.inc.php index 035e78d37bd..2330bc64785 100644 --- a/lib/messaging.inc.php +++ b/lib/messaging.inc.php @@ -226,7 +226,6 @@ class messaging // Now, let us send the message $mail = new StudipMail(); $mail->setSubject($title) - ->setReplyToEmail('') ->addRecipient($to, $rec_fullname) ->setBodyText($mailmessage); if (mb_strlen($reply_to)) { @@ -236,8 +235,7 @@ class messaging ->setSenderName(sprintf(_('Stud.IP für %s'), $snd_fullname)); } else { $mail->setSenderEmail($reply_to) - ->setSenderName($snd_fullname) - ->setReplyToEmail(''); + ->setSenderName($snd_fullname); } } $user_cfg = UserConfig::get($rec_user_id); diff --git a/lib/phplib/Seminar_Register_Auth.class.php b/lib/phplib/Seminar_Register_Auth.class.php index f4b0fd9b43e..f2a272e16ae 100644 --- a/lib/phplib/Seminar_Register_Auth.class.php +++ b/lib/phplib/Seminar_Register_Auth.class.php @@ -214,7 +214,7 @@ class Seminar_Register_Auth extends Seminar_Auth $token = Token::create(7 * 24 * 60 * 60, $user->id); // Link is valid for 1 week $url = $GLOBALS['ABSOLUTE_URI_STUDIP'] . 'email_validation.php?secret=' . $token; $mail = new StudipMail(); - $abuse = $mail->getReplyToEmail(); + $abuse = StudipMail::getAbuseEmail(); $lang_path = getUserLanguagePath($user->id); -- GitLab