J'essaie actuellement de créer un courrier électronique HTML dans Laravel 5 et j'ai du texte (qui contient des éléments <br/>
) que je souhaite insérer dans le courrier électronique. J'utilise le code suivant pour envoyer l'e-mail:
Mail::send(array('html' => 'emails.newinvoice'), array('text' => $emailtext), function($message) use ($email, $subject, $contact_company)
{
$message->to($email, $contact_company)->subject($subject);
});
Donc, la variable $emailtext
contient du texte avec des balises HTML. Dans ma vue de présentation emails.newinvoice
, j'ai les éléments suivants:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
<p>{{{ $text }}}</p>
</body>
</html>
Lors de l'envoi du courrier électronique, le texte inséré dans mon courrier et les éléments HTML de ce texte sont affichés sous forme de caractères normaux, ce qui signifie que mon courrier électronique s'affiche de la manière suivante:
test<br/>test
Au lieu de
test
test
Comment puis-je m'assurer que les balises HTML du texte inséré sont rendues au format HTML et non au format texte?
Vous devez spécifier la clé html
dans le premier paramètre:
Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext],
// ^^^^
Remplacez également le bloc {{ }}
à échappement automatique par le {!! !!}
non échappé du modèle:
<p> {!! $text !!} </p>
Vous devez utiliser:
{!! $text !!}
au lieu de
{{ $text }}
Blade échappe automatiquement à tout code HTML lors de l'écho, à moins que vous ne le lui disiez explicitement.
Oui, la solution ci-dessus fonctionne très bien ..
utiliser {!! $contents !!}
au lieu de cela
{{ $contents }}
Ce {!! $contents !!}
sert à autoriser le code HTML Alors que ce {{ $contents }}
concerne uniquement le texte brut.
Après avoir vérifié diverses solutions, les codes suivants ont fonctionné pour moi -
try {
$template_data = ['otp' => $otp, 'name' => $name];
//send verification code
Mail::send(['html' => 'email.account_verification'], $template_data,
function ($message) use ($email) {
$message->to($email)
->from('[email protected]') //not sure why I have to add this
->subject('Account verification');
});
return Response::json(['code' => 200, 'msg' => 'Sent successfully']);
} catch (Exception $ex) {
return Response::json(['code' => 200, 'msg' => 'Something went wrong, please try later.']);
}