it-swarm.com.de

Laravel 5 Hinzufügen von HTML zu E-Mail

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?

20
Devos50

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>
26
Limon Monte

Sie müssen verwenden:

{!! $text !!}

anstatt

{{ $text }}

Blade entgeht beim Echo automatisch jedem HTML-Code, es sei denn, Sie werden ausdrücklich dazu aufgefordert.

15
Igor Pantović

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.

2
Delino

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.']);
      }  
0
Sachin Vairagi