如何在 Laravel 中使用自定义 SMTP 配置

问题描述

我正在尝试使用自定义 SMTP 配置(不在 .env 文件中)发送电子邮件

enter image description here

我所做的尝试:

        Config::set('mail.mailers.smtp.host',$emailConfig->MAIL_HOST);
        Config::set('mail.mailers.smtp.port',$emailConfig->MAIL_PORT);
        Config::set('mail.mailers.smtp.encryption',$emailConfig->email);
        Config::set('mail.mailers.smtp.username',$emailConfig->email);
        Config::set('mail.mailers.smtp.password',$emailConfig->password);

        Config::set('mail.from.address',$emailConfig->MAIL_FROM_EMAIL);
        Config::set('mail.from.name',$emailConfig->MAIL_FROM_NAME);

         $user = (object)[
                'email' => $item,'name' => substr($item,strpos($item,'@')),];

            if ($i % $mailsCount == 0)$count++;
            if ($user){
                $thisBody = ElzahabyDynamicLaravelString($user,$body,$this->sign);
                $thisSubject = ElzahabyDynamicLaravelString($user,$subject,$this->sign);
                $when = Carbon::Now()->addMinutes($every*$count);

                Mail::to($user)
                    ->later($when,new EmailForQueuing($user,$thisBody,$thisSubject,$request->emailTemplate));
            }

但是我遇到了一个错误Swift_TransportException: Cannot send message without a sender address in

解决方法

您是否在 .env 文件中设置了电子邮件配置? 像这样:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=tls