Ich versuche gerade, eine HTML-E-Mail in Laravel 5 zu erstellen, und ich habe Text (der <br/>
-Elemente enthält) in die E-Mail eingefügt. Ich verwende den folgenden Code, um die E-Mail zu senden:
Mail::send(array('html' => 'emails.newinvoice'), array('text' => $emailtext), function($message) use ($email, $subject, $contact_company)
{
$message->to($email, $contact_company)->subject($subject);
});
Die $emailtext
-Variable enthält also Text mit HTML-Tags. In meiner emails.newinvoice
-Layoutansicht habe ich Folgendes:
<!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>
Beim Senden der E-Mail werden der eingefügte Text in meiner E-Mail und die HTML-Elemente in diesem Text als normale Zeichen angezeigt. Dies bedeutet, dass meine E-Mail folgendermaßen angezeigt wird:
test<br/>test
Anstatt
test
test
Wie kann ich sicherstellen, dass die HTML-Tags im eingefügten Text als HTML und nicht als Text dargestellt werden?
Sie müssen im ersten Parameter den Schlüssel html
angeben:
Mail::send( ['html' => 'emails.newinvoice'], ['text' => $emailtext],
// ^^^^
Ersetzen Sie den automatisch umgehobenen Block {{ }}
durch nicht umschriebenen {!! !!}
in der Vorlage:
<p> {!! $text !!} </p>
Sie müssen verwenden:
{!! $text !!}
anstatt
{{ $text }}
Blade entgeht beim Echo automatisch jedem HTML-Code, es sei denn, Sie werden ausdrücklich dazu aufgefordert.
Ja, die Lösung oben funktioniert ganz gut ..
verwenden Sie {!! $contents !!}
an Stelle von
{{ $contents }}
Dieser {!! $contents !!}
dient zum Erlauben von html Während dieser {{ $contents }}
nur für reinen Text ist.
Nachdem ich verschiedene Lösungen geprüft hatte, funktionierten folgende Codes für mich -
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.']);
}