Laravel在表单提交中发送电子邮件

时间:2020-03-26 23:17:52

标签: php laravel

所以我有一个简单的表单,我希望每当用户提交表单以通过电子邮件发送给我时,就不确定是什么问题,就像我提交表单时遇到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 :(得分:0)

我认为您忘记了在类构造函数中插入Request $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

相关问题