Laravel 6: 无法发送没有发件人地址的消息

3

当我尝试通过联系表单向我的Mailtrap发送电子邮件时,为什么会出现这个错误? 错误信息图片

这是我的web路由 routes\web.php

Route::get('contact','ContactFormController@create');

Route::post('contact','ContactFormController@store');

这是我的 .env 文件

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:4Lxefu/REQw/cgLLiwCkXD5HPV6HbbwzRF93N1ZNYvI=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=f65b067cdc6edc
MAIL_PASSWORD=3556eea6c9ad58
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

以下是我的控制器 app\Http\Controllers\ContactFormController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

// ! IMPORT
use App\Mail\ContactFormMail;
use Illuminate\Support\Facades\Mail;

class ContactFormController extends Controller
{
    //

    public function create(){
        return view('contact.create');
    }

    public function store(){

        $data = request()->validate([
             'name'=> 'required',
             'email'=> 'required|email',
             'message'=> 'required',
        ]);

        // ! Create Mail here

        Mail::to('test@test.com')->send(new ContactFormMail());
        // dd(request()->all());
    }
}

这是我的 contact.blade.php 文件 resources\views\contact\create.blade.php

@extends('layouts.app')

@section('content')
   <div class="container">
       <div class="card">
           <div class="card-body">
            <div class="card-title"><h1>Contact Form Email</h1></div>
                 <form action="/contact" method="POST">
                <div class="form-group">
                    <label for="name">Name</label>
                    <input type="text" name="name" value="{{old('name')}}" class=" form-control">
                    <div>{{$errors->first('name')}}</div>
                </div>

                <div class="form-group">
                    <label for="email">Email</label>
                    <input type="email" name="email" value="{{old('email')}}" class=" form-control">
                    <div>{{$errors->first('email')}}</div>
                </div>

                <div class="form-group">
                    <label for="message">Message</label>
                <textarea name="message" id="message" cols="30" rows="10" class=" form-control"></textarea>
                    <div>{{$errors->first('message')}}</div>
                </div>
                @csrf
                <button type="submit" class="btn btn-primary">Send Message</button>
            </form>
            </div>
       </div>
   </div>
@endsection

这是我的 contact-form.blade.php 文件 resources\views\emails\contact\contact-form.blade.php

@component('mail::message')
# Introduction

The body of your message.

@component('mail::button', ['url' => ''])
Button Text
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent

这是我的邮件app\Mail\ContactFormMail.php

<?php

namespace App\Mail;

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

class ContactFormMail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->markdown('emails.contact.contact-form');
    }
}

请检查我是否做错了什么,我需要将此应用程序托管才能在邮件侦控中使邮件功能正常工作吗? 请参见上面附的错误消息图片。
3个回答

4
ContactFormMail中,给邮件设置一个合适的发件地址,例如:
return $this->markdown('emails.contact.contact-form')->from('example@test.in', 'Example');

或者你也可以在.env文件中进行配置,例如:

MAIL_FROM_ADDRESS=example@test.in
MAIL_FROM_NAME=Example

很高兴听到这个消息 :) - Amal S R

2
MAIL_FROM_ADDRESS=null

正如错误提示所说,发件人地址缺失,您需要将其更改为某个值,以便它不是null


1

完美的方式:

  1. 将示例值MAIL_FROM_ADDRESSMAIL_FROM_NAME添加到.env
  2. 使用php artisan config:clear
  3. 重新启动服务 CMD Ctrl+C php artisan serve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接