发送电子邮件时 Laravel htmlspecialchars() 错误

Posted

技术标签:

【中文标题】发送电子邮件时 Laravel htmlspecialchars() 错误【英文标题】:Laravel htmlspecialchars() error when sending email 【发布时间】:2019-11-22 22:42:27 【问题描述】:

我正在尝试通过 Laravel 中的 Sendgrid 发送电子邮件。我一直在关注Sendgrid's Knowledge Base Article on Sending Email with Laravel

我已经在我的.env 文件中设置了所有内容(尽管我还必须更新~/config/mail.php 中的MAIL_HOST)并且我能够发送测试电子邮件(我在刀片中执行此操作) .

电子邮件模板本身的刀片与 SendGrid 的文档完全相同:

<!DOCTYPE html>
<html lang="en-US">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h2>Test Email</h2>
        <p>$message</p>
    </body>
</html>

我在单独的刀片中运行的代码(我只是为了测试而这样做)是:

@php

use App\Mail\TestEmail;

$data = ['message' => 'Oh, hai!'];

Mail::to('john@doe.com')->send(new TestEmail($data));

@endphp

上面我得到以下错误:

htmlspecialchars() expects parameter 1 to be string, object given 
    (View: ~/resources/views/emails/test.blade.php)

当我不在刀片中使用 message 时,一切都很好。

谁能告诉我发生了什么以及如何解决它?这是我第一次使用 Laravel,任何能指引我正确方向的东西都可以。

【问题讨论】:

【参考方案1】:

$message 是自 Laravel 5.6 以来的保留变量,表示 Illuminate\Mail\Message 对象。

在 Blade 模板和 PHP 代码中将 $message 替换为 $content$msg 之类的东西,一切正常!

【讨论】:

以上是关于发送电子邮件时 Laravel htmlspecialchars() 错误的主要内容,如果未能解决你的问题,请参考以下文章

发送 TLS 电子邮件时 Laravel 证书验证错误

Laravel 邮件在添加密件抄送时会发送两次电子邮件

使用 smtp 服务器发送自定义电子邮件地址时 Laravel 错误

Laravel 5.4 - 单击电子邮件中的验证链接时未传递或发送电子邮件验证令牌令牌。

在 Laravel 中使用 MailChimp 发送常规电子邮件

在 laravel 中发送邮件时缺少 Illuminate\Support\Manager::createDriver() 的参数 1