php template Laravel 5 ajoutant HTML à l'email




mailtrap laravel (4)

J'essaie actuellement de créer un email HTML dans Laravel 5 et j'ai du texte (qui contient <br/> éléments) que je veux insérer dans le mail. J'utilise le morceau de 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);
});

Ainsi, la variable $emailtext contient du texte avec des balises HTML. Dans ma vue de mise en page 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 de l'e-mail, le texte inséré dans mon courrier et les éléments HTML de ce texte s'affichent sous la forme de caractères normaux, ce qui signifie que mon email apparaît comme:

test<br/>test

Au lieu de

test
test

Comment puis-je m'assurer que les balises HTML dans le texte inséré sont rendues en HTML et non en texte brut?


Ouais la solution ci-dessus fonctionne très bien ..

utiliser {!! $contents !!} {!! $contents !!}

au lieu de cela

{{ $contents }}

Ce {!! $contents !!} {!! $contents !!} est pour permettre html alors que {{ $contents }} est juste pour du texte brut.


Vous devez utiliser:

{!! $text !!}

au lieu de

{{ $text }}

Blade échappe automatiquement à tous les fichiers HTML lors de l'écho, sauf si vous le lui dites explicitement.


Vous devez spécifier la clé html dans le premier paramètre:

Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext], 
//           ^^^^

Remplacez également le bloc échappé automatiquement {{ }} par le non-échappé {!! !!} {!! !!} dans le template:

<p> {!! $text !!} </p>

Après vérification des différentes 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.']);
      }  




newline