config = require __DIR__ . '/../config/mail.php'; } /** * Send an email. * * @param string $toEmail * @param string $toName * @param string $subject * @param string $htmlBody * @param string $textBody Plain-text fallback (optional) * @throws MailerException */ public function send( string $toEmail, string $toName, string $subject, string $htmlBody, string $textBody = '' ): void { $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = $this->config['host']; $mail->SMTPAuth = true; $mail->Username = $this->config['username']; $mail->Password = $this->config['password']; $mail->SMTPSecure = $this->config['encryption'] === 'ssl' ? PHPMailer::ENCRYPTION_SMTPS : PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = $this->config['port']; $mail->SMTPDebug = $this->config['debug']; $mail->setFrom($this->config['from_email'], $this->config['from_name']); $mail->addAddress($toEmail, $toName); $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $htmlBody; $mail->AltBody = $textBody ?: strip_tags($htmlBody); $mail->send(); } }