Set Sitename / site email as sender for system emails
authornupplaPhil <admin+github@philipp.info>
Sat, 1 Feb 2020 21:30:10 +0000 (22:30 +0100)
committernupplaPhil <admin+github@philipp.info>
Sun, 2 Feb 2020 21:43:39 +0000 (22:43 +0100)
mod/lostpass.php
mod/removeme.php
src/Core/Update.php
src/Model/User.php
src/Module/Admin/Users.php
src/Util/EMailer/MailBuilder.php
src/Util/EMailer/SystemMailBuilder.php
src/Util/Emailer.php

index e412c49..04316a0 100644 (file)
@@ -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'])
index 86d1f04..01a9b86 100644 (file)
@@ -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()))
index 2a3b3a6..6eb056f 100644 (file)
@@ -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'])
index cc6b96a..dd94413 100644 (file)
@@ -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'])
index 5ca50d1..d4e19da 100644 (file)
@@ -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'])
index fab6c88..fe801bd 100644 (file)
@@ -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']);
 
index 56ae620..41d758b 100644 (file)
@@ -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);
+       }
 }
index ed4ea4d..3f9a491 100644 (file)
@@ -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);
        }
 
        /**