Laravel メール送信で「htmlspecialchars() ...」のエラーが出たら

2022年9月16日金曜日

Laravel PHP

t f B! P L

はじめに

Laravelのメール送信で、こんな感じのエスケープ関連のエラーメッセージが出た時の対処です。

Laravel htmlspecialchars() expects parameter 1 to be string, object given in my project?

問題のコード

■ コントローラー

Mail::send(
    ['text' => 'emails.hello'],
    ['message' => 'こんにちは!'],
    function($message) use ($from_email, $mail_subject, $to_email ) {
        $message->from( $from_email );
        $message->to( $to_email );
        $message->subject( $mail_subject );
    });

■ emails.hello.blade.php

{{ $message }}

一体どこが悪いのだろう …

解決

原因判明。

原因は、メール本文に渡すパラメータのキー名が「message」だったのがダメだったらしい。

試しにキーを「message」→ 「messages」に変えたところ、正常にメールが送信された!

■ コントローラー

Mail::send(
    ['text' => 'emails.hello'],
    ['messages' => 'こんにちは!'],
    function($message) use ($from_email, $mail_subject, $to_email ) {
        $message->from( $from_email );
        $message->to( $to_email );
        $message->subject( $mail_subject );
    });

■ emails.hello.blade.php

{{ $messages }}

Laravel? blade?の仕組み上、「message」というのは特殊なキー扱いになっているのかもしれない。

スポンサーリンク
スポンサーリンク

このブログを検索

Profile

自分の写真
Webアプリエンジニア。 日々新しい技術を追い求めてブログでアウトプットしています。
プロフィール画像は、猫村ゆゆこ様に書いてもらいました。

仕事募集もしていたり、していなかったり。

QooQ