2015-04-27 12 views
19

Attualmente sto cercando di creare un'e-mail HTML in Laravel 5 e ho del testo (che contiene gli elementi <br/>) che voglio inserire nell'e-mail. Io uso il seguente pezzo di codice per inviare l'e-mail:Laravel 5 aggiungendo HTML all'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); 
}); 

Quindi la variabile $emailtext contiene del testo con tag HTML. A mio emails.newinvoice visualizzazione layout, ho il seguente:

<!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> 

Quando si invia l'e-mail, il testo inserito nella mia posta elettronica e gli elementi HTML in quel testo vengono visualizzati come caratteri normali che significa che la mia e-mail si presenta come:

test<br/>test 

Invece di

test 
test 

come posso fare in modo che i tag HTML nel testo inserito vengono resi come HTML e non come testo normale?

+1

Cosa succede quando usi {!! $ text !!}? – Yani

risposta

21

è necessario specificare html chiave nel primo parametro:

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

sostituire anche il blocco automatico di escape {{ }} con escape {!! !!} nel modello:

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

Sfortunatamente, il mio codice HTML inserito viene ancora visualizzato come testo normale dopo questa modifica. – Devos50

10

è necessario utilizzare:

{!! $text !!} 

anziché

Blade esegue il escape automatico di qualsiasi html quando echo se non lo si specifica esplicitamente.