1

ErrorException htmlspecialchars() expects parameter 1 to be string, object given (View: F:\OWL\owl-technical\resources\views\emails\contact-mail.blade.php)

This error appears after I try to send a message from the form on the contact page!

Contact Form

<!-- ***** 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 ***** -->

But if I add {{json_decode ($ name)}} in file contact-mail

<!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>

The names are encoded with something like / u042 / u043 (but it's clear here, I encoded the name using json) and so on. But the message field remains empty when receiving a letter.

Laravel 7.0

Sending email from localhost does not work. He writes that he cannot send a message without an email, but I put all the fields with emails. Created everything with docs.laravel.

App\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));
    }
}

App\Mail\MailClass

<?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 ');
    }
}

I checked everything I could, but I never found an error

Dizmuzz
  • 15
  • 4

1 Answers1

1

Change $message variable to another variable. Laravel automatically makes the $message variable available to all of your email templates

STA
  • 30,729
  • 8
  • 45
  • 59