首页 > 解决方案 > Laravel 邮件 - 没有邮件正文

问题描述

ErrorException htmlspecialchars() 期望参数 1 是字符串,给定对象(查看:F:\OWL\owl-technical\resources\views\emails\contact-mail.blade.php)

我尝试从联系页面上的表单发送消息后出现此错误!

联系表

<!-- ***** Contact Form Start ***** -->
                <div class="col-lg-8 col-md-6 col-sm-12">
                    <form action="{{ route('contacts') }}/send" method="POST">
                        @csrf
                        <div class="contact-form">
                            <div class="row">
                                <div class="col-lg-6 col-md-12 col-sm-12">
                                    <input type="text" name="name" id="name" placeholder="Name">
                                </div>
                                <div class="col-lg-6 col-md-12 col-sm-12">
                                    <input name="email" id="email" type="email" placeholder="E-Mail">
                                </div>
                                <div class="col-lg-12">
                                    <textarea name="message" id="message" placeholder="Your message"></textarea>
</div>
<div class="col-lg-12">
<button type="send">Send message</button>
                                </div>
                            </div>
                        </div>
                    </form>
                </div>
                <!-- ***** Contact Form End ***** -->

但是如果我在文件联系人邮件中添加 {{json_decode ($ name)}}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
    name: {{ $name}} <br>
    email: {{ $email}} <br>
    message : {{$message }} <br>

</body>
</html>

名称用 /u042 / u043 之类的东西编码(但这里很清楚,我使用 json 对名称进行编码)等等。但收到信件时,消息字段仍为空。

拉拉维尔 7.0

从本地主机发送电子邮件不起作用。他写道,如果没有电子邮件,他就无法发送消息,但我将所有字段都放在了电子邮件中。使用 docs.laravel 创建所有内容。

应用\Http\Controller\MailSetting

<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
use App\Mail\MailClass;

class MailSetting extends Controller
{
    public function send_form(Request $request)
    {
        $name = $request->name;
        $email = $request->email;
        $message = $request->message;

        Mail::to('test@mail.ru')->send(new MailClass($name, $email, $message));
    }
}

应用\邮件\邮件类

<?php

namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class MailClass extends Mailable
{
    use Queueable, SerializesModels;

    protected $name;
    protected $email;
    protected $message;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($name, $email, $message)
    {
        $this->name = $name;
        $this->email = $email;
        $this->message = $message;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.contact-mail')
            ->with([
            'name' => $this->name,
            'email' => $this->email,
            'message' => $this->message,
        ])
        ->subject('New MESSAGE ');
    }
}

我检查了所有可能的内容,但从未发现错误

标签: phpjsonlaravelemail

解决方案


将变量更改$message为另一个变量。Laravel 自动使该$message变量可用于您的所有电子邮件模板


推荐阅读