发送邮件

有时候在Matomo或你的插件中,你会想要发送电子邮件通知一个或多个用户正在发生的事情,或者为他们提供一些有用的或相关的信息。在代码中,这是使用邮件类。

本指南简要介绍了如何最好地做到这一点。

Mail类

Matomo中的所有邮件发送功能都要经过邮件类,它反过来使用PHPMailer库。

使用这个类很简单:

$mail = new \Piwik\ mail ();$mail->addTo($targetEmail, 'Matomo User');邮件- > setDefaultFromPiwik ();邮件- > setSubject(主题);邮件- > setWrappedHtmlBody(身体);邮件- >发送();

可以将电子邮件正文设置为自定义HTML或纯文本,但最好使用setWrappedHtmlBody ()方法,因为这将围绕在Matomo品牌的文本。

邮件子类模式

可以使用邮件类直接发送电子邮件。然而,目前存在一种模式,即为派生的每种类型的电子邮件创建一个新类邮件,像这样:

MySpecialEmail扩展\Piwik\Mail {/** * @var字符串*/ private $login;/** * @var字符串*/ private $emailAddress;/** * @var int */ private $idSite;公共函数__construct($login, $emailAddress, $idSite) {parent::__construct();$this->login = $login;$this->emailAddress = $emailAddress;$this->idSite = $idSite;$ this - > setUpEmail ();}私有函数setUpEmail() {$siteName =站点::getNameFor($this->idSite);$ this - > setDefaultFromPiwik (); $this->addTo($this->emailAddress); $this->setSubject(Piwik::translate('MyPlugin_MySpecialEmailSubject', [$siteName])); $this->addReplyTo($this->getFrom(), $this->getFromName()); $this->setWrappedHtmlBody($this->getDefaultBodyView()); } protected function getDefaultBodyView() { $view = new View('@MyPlugin\_mySpecialemail.twig'); $view->login = $this->login; $view->emailAddress = $this->emailAddress; $view->siteName = Site::getNameFor($this->idSite); return $view; } }

封装逻辑来设置电子邮件减少了发送电子邮件所需的代码量,并允许我们在多个地方发送电子邮件,而无需重复代码:

$login = Piwik::getCurrentUserLogin();$userModel = new \Piwik\Plugins\UsersManager\Model();$user = $userModel->getUser($login);$emailAddress = $user['email'];$idSite = Common::getRequestVar('idSite');$mail =新的MySpecialEmail($login, $emailAddress, $idSite);邮件- >发送();
Baidu