From 9428466d1dde7a5456694916d92c142c69367db4 Mon Sep 17 00:00:00 2001 From: nupplaPhil Date: Sat, 1 Feb 2020 22:30:10 +0100 Subject: [PATCH] Set Sitename / site email as sender for system emails --- mod/lostpass.php | 4 ++-- mod/removeme.php | 2 +- src/Core/Update.php | 4 ++-- src/Model/User.php | 4 ++-- src/Module/Admin/Users.php | 2 +- src/Util/EMailer/MailBuilder.php | 6 +----- src/Util/EMailer/SystemMailBuilder.php | 17 +++++++++++++++-- src/Util/Emailer.php | 5 +++-- 8 files changed, 27 insertions(+), 17 deletions(-) diff --git a/mod/lostpass.php b/mod/lostpass.php index e412c49586..04316a0996 100644 --- a/mod/lostpass.php +++ b/mod/lostpass.php @@ -65,7 +65,7 @@ function lostpass_post(App $a) Login Name: %3$s', $resetlink, DI::baseUrl(), $user['nickname'])); $email = DI::emailer() - ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) + ->newSystemMail(DI::app(), (!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) ->withMessage(DI::l10n()->t('Password reset requested at %s', $sitename), $preamble, $body) ->forUser($user['uid'] ?? 0) ->withRecipient($user['email']) @@ -157,7 +157,7 @@ function lostpass_generate_password($user) ', DI::baseUrl(), $user['nickname'], $new_password)); $email = DI::emailer() - ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) + ->newSystemMail(DI::app(), (!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) ->withMessage(DI::l10n()->t('Your password has been changed at %s', $sitename), $preamble, $body) ->forUser($user['uid'] ?? 0) ->withRecipient($user['email']) diff --git a/mod/removeme.php b/mod/removeme.php index 86d1f04e34..01a9b86da8 100644 --- a/mod/removeme.php +++ b/mod/removeme.php @@ -42,7 +42,7 @@ function removeme_post(App $a) } $email = DI::emailer() - ->newSystemMail((!empty($admin['language'])) ? DI::l10n()->withLang($admin['language']) : DI::l10n()->withLang('en')) + ->newSystemMail(DI::app(), (!empty($admin['language'])) ? DI::l10n()->withLang($admin['language']) : DI::l10n()->withLang('en')) ->withMessage(DI::l10n()->t('[Friendica System Notify]') . ' ' . DI::l10n()->t('User deleted their account'), DI::l10n()->t('On your Friendica node an user deleted their account. Please ensure that their data is removed from the backups.'), DI::l10n()->t('The user id is %d', local_user())) diff --git a/src/Core/Update.php b/src/Core/Update.php index 2a3b3a68d6..6eb056f573 100644 --- a/src/Core/Update.php +++ b/src/Core/Update.php @@ -264,7 +264,7 @@ class Update $body = $l10n->t("The error message is\n[pre]%s[/pre]", $error_message); $email = DI::emailer() - ->newSystemMail($l10n) + ->newSystemMail(DI::app(), $l10n) ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble, $body) ->forUser($admin['uid'] ?? 0) ->withRecipient($admin['email']) @@ -300,7 +300,7 @@ class Update $from_build, $to_build)); $email = DI::emailer() - ->newSystemMail($l10n) + ->newSystemMail(DI::app(), $l10n) ->withMessage($l10n->t('[Friendica Notify] Database update'), $preamble) ->forUser($admin['uid'] ?? 0) ->withRecipient($admin['email']) diff --git a/src/Model/User.php b/src/Model/User.php index cc6b96ae58..dd94413758 100644 --- a/src/Model/User.php +++ b/src/Model/User.php @@ -898,7 +898,7 @@ class User )); $email = DI::emailer() - ->newSystemMail(DI::l10n()) + ->newSystemMail(DI::app(), DI::l10n()) ->withMessage(DI::l10n()->t('Registration at %s', $sitename), $body) ->forUser($user['uid'] ?? 0) ->withRecipient($user['email']) @@ -966,7 +966,7 @@ class User )); $email = DI::emailer() - ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) + ->newSystemMail(DI::app(), $l10n) ->withMessage(DI::l10n()->t('Registration details for %s', $sitename), $preamble, $body) ->forUser($user['uid'] ?? 0) ->withRecipient($user['email']) diff --git a/src/Module/Admin/Users.php b/src/Module/Admin/Users.php index 5ca50d11ac..d4e19da479 100644 --- a/src/Module/Admin/Users.php +++ b/src/Module/Admin/Users.php @@ -77,7 +77,7 @@ class Users extends BaseAdmin $body = sprintf($body, DI::baseUrl()->get(), $user['nickname'], $result['password'], DI::config()->get('config', 'sitename')); $email = DI::emailer() - ->newSystemMail((!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) + ->newSystemMail(DI::app(), (!empty($user['language'])) ? DI::l10n()->withLang($user['language']) : DI::l10n()) ->withMessage(DI::l10n()->t('Registration details for %s', DI::config()->get('config', 'sitename')), $preamble, $body) ->forUser($user['uid'] ?? 0) ->withRecipient($user['email']) diff --git a/src/Util/EMailer/MailBuilder.php b/src/Util/EMailer/MailBuilder.php index fab6c8862d..fe801bd562 100644 --- a/src/Util/EMailer/MailBuilder.php +++ b/src/Util/EMailer/MailBuilder.php @@ -138,11 +138,7 @@ abstract class MailBuilder */ public function build(bool $raw = false) { - if (empty($this->recipientAddress)) { - throw new InternalServerErrorException('Recipient address is missing.'); - } - - if ((empty($this->senderName) || empty($this->senderAddress)) && + if ((empty($this->recipientAddress)) && !empty($this->recipientUid)) { $user = User::getById($this->recipientUid, ['username', 'email']); diff --git a/src/Util/EMailer/SystemMailBuilder.php b/src/Util/EMailer/SystemMailBuilder.php index 56ae620ec9..41d758ba0a 100644 --- a/src/Util/EMailer/SystemMailBuilder.php +++ b/src/Util/EMailer/SystemMailBuilder.php @@ -3,13 +3,13 @@ namespace Friendica\Util\EMailer; use Exception; +use Friendica\App; use Friendica\App\BaseURL; use Friendica\Content\Text\BBCode; use Friendica\Core\Config\IConfig; use Friendica\Core\L10n; use Friendica\Core\Renderer; use Friendica\Network\HTTPException\InternalServerErrorException; -use Friendica\Util\Emailer; /** * Builder for system-wide emails without any dependency to concrete entities (like items, activities, ..) @@ -26,7 +26,7 @@ class SystemMailBuilder extends MailBuilder /** @var string */ protected $siteAdmin; - public function __construct(L10n $l10n, BaseURL $baseUrl, IConfig $config) + public function __construct(App $a, L10n $l10n, BaseURL $baseUrl, IConfig $config) { parent::__construct($l10n, $baseUrl, $config); @@ -37,6 +37,8 @@ class SystemMailBuilder extends MailBuilder } else { $this->siteAdmin = $l10n->t('%s Administrator', $siteName); } + + $this->senderAddress = $a->getSenderEmailAddress(); } /** @@ -107,4 +109,15 @@ class SystemMailBuilder extends MailBuilder '$textversion' => $textVersion, ]); } + + /** + * {@inheritDoc} + */ + public function build(bool $raw = false) + { + // for system emails, always use the sitename/site address as the sender + $this->withSender($this->config->get('config', 'sitename'), $this->senderAddress); + + return parent::build($raw); + } } diff --git a/src/Util/Emailer.php b/src/Util/Emailer.php index ed4ea4d87c..3f9a491d76 100644 --- a/src/Util/Emailer.php +++ b/src/Util/Emailer.php @@ -40,13 +40,14 @@ class Emailer /** * Creates a new system email * + * @param App $a The Friendica app * @param L10n $l10n The chosen language for the new email * * @return SystemMailBuilder */ - public function newSystemMail(L10n $l10n) + public function newSystemMail(App $a, L10n $l10n) { - return new SystemMailBuilder($l10n, $this->baseUrl, $this->config); + return new SystemMailBuilder($a, $l10n, $this->baseUrl, $this->config); } /**