Laravel отправить письмо на форму отправить - PullRequest
0 голосов
/ 27 марта 2020

Итак, у меня есть простая форма, и я хочу, чтобы каждый раз, когда пользователь отправлял ее форму, мне на электронную почту, я не был уверен, в чем проблема, так как всякий раз, когда я отправляю форму, я получаю ошибку 500, и я не уверен, почему.

Вот форма:

<div class="contact" id="contact">
    <form action="{{url('/contact')}}" method="post">
        {{ csrf_field() }}
        <input type="text" class="fname" name="firstname" placeholder="First Name">
        <input type="text" class="lname" name="lastname" placeholder="Last Name">
        <input type="text" class="address" name="address" placeholder="Address">
        <input type="text" class="email" name="email" placeholder="Email">
        <textarea id="subject" name="message" placeholder="Message" style="height:200px"></textarea>
        <label class="checkbox-label">
            <input type="checkbox" class="yard" name="yard"> I Want a Yard Sign
        </label>
        <br>
        <label class="checkbox-label">
            <input type="checkbox" class="host" name="host"> Host a Meet and Greet
        </label>
        <br>

        <input type="submit" value="Get More Information">
        <br>
    </form>
</div>

И в моем файле веб-маршрутов у меня есть две настройки моего маршрута

Route::get('/contact', function () {
    return view('contact');
});

Route::post('/contact', function (Request $request) {
    Mail::send(new ContactMail($request));
    return redirect('/');
});

Я создал свой почтовый файл

<?php

namespace App\Mail;

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

class ContactMail extends Mailable
{
    use Queueable, SerializesModels;

    public $email;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('New Contact Mail')
                    ->from($this->email->email, $this->email->firstname)
                    ->to('test@gmail.com')
                    ->view('email.contactmail');
    }
}

А потом мой простой блейд-файл

{{ $email->content }}

Всякий раз, когда я отправляю форму или пытаюсь вызвать маршрут, я получаю ошибку 500, и я не знаю, почему.

1 Ответ

0 голосов
/ 27 марта 2020

Я думаю, вы забыли вставить Request $request в качестве параметра в конструктор класса и импортировать класс запроса.

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Http\Request;

class ContactMail extends Mailable
{
    use Queueable, SerializesModels;

    public $email;

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

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->subject('New Contact Mail')
                    ->from($this->email->email, $this->email->firstname)
                    ->to('test@gmail.com')
                    ->view('email.contactmail');
    }
}

Кроме того, согласно вашему описанию, вы можете не включать отладку. Измените его в файле .env: APP_DEBUG = TRUE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...