Мне нужно отправлять электронные письма, но у меня уже есть HTML-код, я не хочу использовать laravel blade, потому что мне нужно применить CSS-Inliner к HTML, так вот так я генерирую html:
getRenderedView($viewData) { //code $html = View::make('email.notification', $viewData)->render(); $this->cssInliner->setCSS($this->getCssForNotificationEmail()); $this->cssInliner->setHTML($html); return $this->cssInliner->convert(); }
Итак, чтобы отправить почту с Laravel, вы обычно делаете что-то вроде этого:
Mail::send('emails.welcome', $data, function($message) { $message->to('foo@example.com', 'John Smith')->subject('Welcome!'); });
Но я не хочу передавать представление, у меня уже есть html, как я могу это сделать?
Если я прав в том, чего вы хотите достичь, чтобы обойти это, я создал представление под названием echo.php и внутри, что только echo $ html.
Присвойте свой html чему-то вроде $ data ['html'].
Затем ниже передайте свои данные ['html'] в эхо-представление.
Mail::send('emails.echo', $data, function($message) { $message->to('foo@example.com', 'John Smith')->subject('Welcome!'); });
Дайте мне знать, как вы поживаете.
Тело не доступно из крышки.
Вы можете создать быстрое сообщение вручную:
$message = \Swift_Message::newInstance(); $message->setFrom($messageToParse->template['fromEmail']); $message->setTo($messageToParse->to['email']); $message->setBody($messageToParse->body); $message->addPart($messageToParse->body, 'html contents'); $message->setSubject('subject');
Но тогда вам нужно создать транспорт:
$mailer = self::setMailer( [your transport] ); $response = $mailer->send($message);
Я хочу поделиться советом, который может помочь отправлять электронные письма без «клинка».
Функция Laravel Mail на самом деле является оберткой для Swift. Просто назначьте пустые массивы в $ template и $ data, я имею в виду первые 2 параметра функции, а затем остальное внутри обратного вызова.
Mail::send([], [], function($message) use($to, $title, $email_body) { $message->setBody($email_body)->to($to)->subject($title); });
$data = array( 'email' => 'sample@domail.com', 'first_name' => 'Laravel', 'from' => 'sample@domail.comt', 'from_name' => 'learming' ); Mail::send( 'email.welcome', $data, function( $message ) use ($data) { $message->to( $data['email'] )->from( $data['from'], $data['first_name'] )->subject( 'Welcome!' ); });