/** * Constructs a single string from the email body and headers. * * @param string $body * @param EmailInterface $email * @return string */ protected function buildMessage($body, EmailInterface $email) { $message = "To: " . $email->getTo() . "\r\n"; $message .= "Subject: " . $email->getSubject() . "\r\n"; $message .= $this->buildHeaders($email) . "\r\n"; $message .= $body; return $message; }
/** * Invoke the Emailer's ::doSend method. * * @param EmailInterface $email * @return boolean */ public function send(EmailInterface $email) { foreach ($this->writers as $writer) { $content = $email->accept($writer); if ($content !== null) { return $this->doSend($content, $email); } } throw new \RuntimeException("No visit method for " . get_class($email) . " found among writers."); }
/** * @param string $body * @param EmailInterface $email * @return boolean */ protected function doSend($body, EmailInterface $email) { /** @var SendGridEmail $sendgridEmail */ $sendgridEmail = new SendGridEmail(); $sendgridEmail->addTo($email->getTo())->setFrom($email->getFrom())->setSubject($email->getSubject())->addCc($email->getCc())->setBcc($email->getBcc())->setHtml($body); /** @var Response $res */ $res = static::getSendGrid()->send($sendgridEmail); return $res->getCode() === 200; }
/** * Render an email message into an email body, given its template. * * @param EmailInterface $email * @return string */ public function visitEmail(EmailInterface $email) { $template = "email/{$email->getType()}.twig"; return $this->loadTemplate($template)->render(["id" => $email->getId(), "classes" => $email->getClasses(), "data" => $email->getData(), "message" => $email->getMessage()]); }
/** * @param string $body * @param EmailInterface $email * @return boolean */ protected function doSend($body, EmailInterface $email) { return mail($email->getTo(), $email->getSubject(), $body, $this->buildHeaders($email)); }