host = $settings['host']; if (!isset($settings['username'])) { throw new \Exception('User name is missing in ' . get_called_class()); } $this->user = (object) ['name' => null, 'password' => null]; $this->user->name = $settings['username']; if (!isset($settings['password'])) { throw new \Exception('User password is missing in ' . get_called_class()); } $this->user->password = $settings['password']; $this->port = 25; if (isset($settings['secure']) and $settings['secure'] == 'ssl') { $this->is_secure = true; $this->port = 465; } if (isset($settings['port'])) { $this->port = $settings['port']; } } public function isSecure(): bool { return $this->is_secure; } public function send(Message $message): bool { $mailer = new BaseMailer(); $mailer->isSMTP(); //$mailer->SMTPDebug = SMTP::DEBUG_SERVER; $mailer->Host = $this->host; $mailer->SMTPAuth = true; $mailer->Username = $this->user->name; $mailer->Password = $this->user->password; $mailer->Port = $this->port; if ($this->isSecure()) { $mailer->SMTPSecure = BaseMailer::ENCRYPTION_STARTTLS; } try { $from = $message->getFrom(); if ($from->name !== null) { $mailer->setFrom($from->email, $from->name); } else { $mailer->setFrom($from->email); } foreach ($message->getTo() as $to) { if ($to->name !== null) { $mailer->addAddress($to->email, $to->name); } else { $mailer->addAddress($to->email); } } $ccs = $message->getCc(); if (!empty($ccs)) { foreach ($ccs as $cc) { if ($cc->name !== null) { $mailer->addCC($cc->email, $cc->name); } else { $mailer->addCC($cc->email); } } } $bccs = $message->getBcc(); if (!empty($bccs)) { foreach ($bccs as $bcc) { if ($bcc->name !== null) { $mailer->addBCC($bcc->email, $bcc->name); } else { $mailer->addBCC($bcc->email); } } } $mailer->Subject = $message->getSubject(); if ($message->isHtml()) { $mailer->Body = $message->getHtmlBody(); $mailer->isHTML(); $mailer->AltBody = $message->getBody(); } else { $mailer->Body = $message->getBody(); } $mailer->send(); return true; } catch (\Exception $e) { return false; } } }