I'm trying to get emails to send via Sendgrid in Laravel. I've been following Sendgrid's Knowledge Base Article on Sending Email with Laravel
I have everything set up in my .env
file (though I had to also update the MAIL_HOST
in ~/config/mail.php
) and I am able to send a test email (which I'm doing from within a blade).
The blade for the email template itself is exactly the same as per SendGrid's documentation:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
<h2>Test Email</h2>
<p>{{$message}}</p>
</body>
</html>
The code I'm running in a separate blade (I'm just doing this for testing) is:
@php
use App\Mail\TestEmail;
$data = ['message' => 'Oh, hai!'];
Mail::to('john@doe.com')->send(new TestEmail($data));
@endphp
With the above I get the following error:
htmlspecialchars() expects parameter 1 to be string, object given
(View: ~/resources/views/emails/test.blade.php)
When I don't use {{ message }}
in my blade, then things are fine.
Could someone please let me know what's going on and how to fix it? This is my first time using Laravel and anything that would point me in the right direction is OK.
$message
is a reserved variable since Laravel 5.6, representing a Illuminate\Mail\Message
object.
Replace $message
with something like $content
or $msg
in your Blade template and in your PHP code, and everything will work!