%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Mail/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Mail/AbstractMail.php |
<?php /** * This file is part of the Passwords App * created by Marius David Wieschollek * and licensed under the AGPL. */ namespace OCA\Passwords\Mail; use Exception; use OC_Defaults; use OCA\Passwords\Services\LoggingService; use OCP\IL10N; use OCP\IURLGenerator; use OCP\IUser; use OCP\Mail\IEMailTemplate; use OCP\Mail\IMailer; use OCP\Util; /** * Class AbstractMail * * @package OCA\Passwords\Mail */ abstract class AbstractMail { const MAIL_ID = 'default'; const MAIL_TYPE = 'default'; /** * @var IMailer */ protected IMailer $mailer; /** * @var LoggingService */ protected LoggingService $logger; /** * @var OC_Defaults */ protected OC_Defaults $defaults; /** * @var IURLGenerator */ protected IURLGenerator $urlGenerator; /** * AbstractMail constructor. * * @param IMailer $mailer * @param OC_Defaults $defaults * @param LoggingService $logger * @param IURLGenerator $urlGenerator */ public function __construct( IMailer $mailer, OC_Defaults $defaults, LoggingService $logger, IURLGenerator $urlGenerator ) { $this->mailer = $mailer; $this->logger = $logger; $this->defaults = $defaults; $this->urlGenerator = $urlGenerator; } /** * Create and send the mail to the user * * @param IUser $user * @param IL10N $localisation * @param mixed ...$parameters */ abstract function send(IUser $user, IL10N $localisation, ...$parameters): void; /** * Create a new mail template * * @return IEMailTemplate */ protected function getTemplate() { $template = $this->mailer->createEMailTemplate('passwords.EMail.'.static::MAIL_ID); $template->addHeader(); return $template; } /** * Send the mail * * @param IUser $user * @param string $subject * @param IEMailTemplate $template */ protected function sendMessage(IUser $user, string $subject, IEMailTemplate $template): void { $template->addFooter(); $message = $this->mailer->createMessage(); $message->setTo([$user->getEMailAddress() => $user->getDisplayName()]); $message->setFrom([Util::getDefaultEmailAddress('no-reply') => $this->defaults->getName()]); $message->setSubject($subject); $message->setHtmlBody($template->renderHtml()); $message->setPlainBody($template->renderText()); try { $this->mailer->send($message); } catch(Exception $e) { $this->logger->logException($e); } } }