没有发件人地址就无法发送消息laravel

时间:2020-07-01 13:48:11

标签: laravel email

我正在尝试发送原始邮件,但是出现错误“没有发件人地址就无法发送消息”,并且我似乎看不到我要去哪里。我已经在.env文件中提供了发件人电子邮件,但仍然会显示该错误

我的控制器!

  <?php
    
    namespace App\Http\Controllers\User;
    
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Mail;
    
    
    class ContactController extends Controller
    {
        public function show()
        {
            return view('user.contact');
        }
    
        public function store()
        {
            request()->validate(['email' => 'required|email']);
            Mail::raw('it works', function ($message) {
                $message->to(request('email'))
                    ->subject('Hi There');
            });
            return redirect()->back();
        }
    
    }

我的.env文件

MAIL_MAILER=log
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=admin@example.com
MAIL_FROM_NAME="${APP_NAME}"

我的mail.php文件

  <?php
    
    return [
    
       
    
        'mailers' => [
            'smtp' => [
                'transport' => 'smtp',
                'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
                'port' => env('MAIL_PORT', 587),
                'encryption' => env('MAIL_ENCRYPTION', 'tls'),
                'username' => env('MAIL_USERNAME'),
                'password' => env('MAIL_PASSWORD'),
                'timeout' => null,
                'auth_mode' => null,
            ],
    
            'ses' => [
                'transport' => 'ses',
            ],
    
            'mailgun' => [
                'transport' => 'mailgun',
            ],
    
            'postmark' => [
                'transport' => 'postmark',
            ],
    
            'sendmail' => [
                'transport' => 'sendmail',
                'path' => '/usr/sbin/sendmail -bs',
            ],
    
            'log' => [
                'transport' => 'log',
                'channel' => env('MAIL_LOG_CHANNEL'),
            ],



      'array' => [
            'transport' => 'array',
        ],
    ],

  
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],

];

我的表格!

 <form action="{{ route('contact')}}" method="post">
     @csrf
    
     <div class="form-group">
         <label>E-mail</label>
         <input type="email" name="email" class="form-control">
         @error('email')
         <p style="color: red; font-size: 15px; margin-top: 5px">{{ $message }}</p>
         @enderror
     </div>
    
    
     <button type="submit" class="btn btn-primary">Submit</button>
    </form>

我正在尝试发送原始邮件,但出现错误

没有发件人地址就无法发送消息

而且我似乎看不出我要去哪里。我已经在.env文件中提供了发件人电子邮件,但仍然会显示该错误

4 个答案:

答案 0 :(得分:0)

在您的环境文件中,您的用户名和密码为空,您应该能够从mailtrap中获取用户名和密码,并且应该可以使用

答案 1 :(得分:0)

尝试一下,它应该可以工作:

public function store(Request $request)
{

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

    $email = $request->email;

    $data = [
            'email'    => $request->email,
        ];

    Mail::send('mail', $data, function ($message) use ($email) {
        $message->to('myemail@gmail.com', 'Email Title')->subject('Test Subject 2');
        $message->from($email, "Sender Name");
    });
    echo "HTML Email Sent. Check your inbox.";
}

答案 2 :(得分:0)

配置被缓存后, .env 文件将不再加载。相反,Laravel使用缓存的配置,以便应用程序更快地加载。 因此,更改 .env 文件时,最好运行 php artisan config:cache

答案 3 :(得分:0)

您需要清除缓存以防止发生此错误。依次使用以下命令,您的错误将得到解决。

- php artisan cache:clear
- php artisan route:cache
- php artisan view:clear
- php artisan config:cache

希望它对您有所帮助。