php - example - Laravel 5 agregar HTML al correo electrónico
laravel yield example (4)
Después de verificar varias soluciones, los siguientes códigos funcionaron para mí:
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.'']);
}
Actualmente estoy intentando crear un correo electrónico HTML en Laravel 5 y tengo algo de texto (que contiene <br/>
elementos) que quiero insertar en el correo electrónico. Utilizo el siguiente fragmento de código para enviar el correo electrónico:
Mail::send(array(''html'' => ''emails.newinvoice''), array(''text'' => $emailtext), function($message) use ($email, $subject, $contact_company)
{
$message->to($email, $contact_company)->subject($subject);
});
Entonces, la variable $emailtext
contiene texto con etiquetas HTML. En mi vista de diseño de emails.newinvoice
, tengo lo siguiente:
<!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>
Al enviar el correo electrónico, el texto insertado en mi correo y los elementos HTML en ese texto se muestran como caracteres normales, lo que significa que mi correo electrónico aparece como:
test<br/>test
En lugar de
test
test
¿Cómo puedo asegurarme de que las etiquetas HTML en el texto insertado se procesen como HTML y no como texto plano?
Necesitas usar:
{!! $text !!}
en lugar de
{{ $text }}
Blade escapa automáticamente de cualquier html cuando hace eco a menos que explícitamente le diga que no lo haga.
Sí, la solución anterior funciona bien ...
usa {!! $contents !!}
{!! $contents !!}
en lugar de esto
{{ $contents }}
Esto {!! $contents !!}
{!! $contents !!}
es para permitir html Mientras que este {{ $contents }}
es solo para texto sin formato.
html
especificar la clave html
en el primer parámetro:
Mail::send( [''html'' => ''emails.newinvoice''], [''text'' => $emailtext],
// ^^^^
Además, reemplace el bloque de escape automático {{ }}
por el sin escape {!! !!}
{!! !!}
en la plantilla:
<p> {!! $text !!} </p>