Я создал файл с именем dummy.blade.php, который имеет следующий код
<!DOCTYPE html>
<html lang="en-EN">
<head>
<meta charset="utf-8">
</head>
<body bgcolor="#11C9FF">
{{$emailBody}}
</body>
</html>
И я пытаюсь отправить HTML-контент, используя:
Mail::send('emailTemplates.dummy', ['emailBody'=>'<h1>TESTING</h1>'], function($message)
{
$message->to($myEmail)->subject('Password reset');
});
И полученное письмо выглядит так:
В соответствии с документацией, что я должен получать формат HTML, но я получаю простую текстовую электронную почту. Есть какие-нибудь подсказки?
Просто опубликовать ответ, так как это может быть полезно для других.
изменено
{{$emailBody}}
в
<?= $emailBody ?>
и это сработало как шарм.
Двойные фигурные скобки экранируют HTML внутри них, вам нужно использовать другой синтаксис для неэкранированной строки.
Так что вместо
{{ $emailBody }}
ты должен использовать
{!! $emailBody !!}
Вы можете прочитать больше о здесь: https://laravel.com/docs/5.5/blade#displaying-data
Источник: https://laravel.com/docs/5.1/mail
По умолчанию предполагается, что представление, данное методу send, содержит HTML. Однако, передав массив в качестве первого аргумента методу send, вы можете указать простое текстовое представление для отправки в дополнение к представлению HTML:
Mail::send(['html.view', 'text.view'], $data, $callback);
Или, если вам нужно только отправить простое текстовое электронное письмо, вы можете указать это, используя текстовый ключ в массиве:
Mail::send(['text' => 'view'], $data, $callback);