【问题标题】:Laravel - cannot send message without a sender addressLaravel - 没有发件人地址无法发送消息
【发布时间】:2020-09-30 07:46:23
【问题描述】:

我无法在 Laravel 中发送多个作业。

有时它工作正常。

有时我在failed_job 表中收到这条消息cannot send message without a sender address,但只有一条有效。

有时两者都不起作用。

这是在我的本地,但在服务器上它根本不起作用。

我正在尝试清除缓存、配置等所有内容,但它根本不起作用。

我不这么认为,因为我在 .env 上的设置导致它并不总是出错。

只是有时会出错,有时会起作用。

最常见的错误是 1 个有效,1 个无效。

它只运行 1 个作业,1 个作业将在 failed_job 表中抛出失败

工作

class SendContactContentEmail implements ShouldQueue
{
    use Batchable, Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    public $data;
    public $emails;
    public $tries = 5;
    /**
     * Create a new job instance.
     *
     * @param array $_data
     */
    public function __construct(
        $_data
    )
    {
        $this->data = $_data;
        $this->emails = config('email.admin');
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $content = new ContactContentEmail($this->data);
        if (!empty($this->emails)){
            foreach ($this->emails as $email){
                Mail::to($email)->send($content);
            }
        }
    }
}
class SendContactEmail implements ShouldQueue
{
    use Batchable, Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
    protected $email_address;
    public $tries = 5;
    /**
     * Create a new job instance.
     *
     * @param string $_email_address
     */
    public function __construct(
        string $_email_address
    )
    {
        $this->email_address = $_email_address;
    }
    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        $email = new ContactEmail();
        Mail::to($this->email_address)->send($email);
    }
}

邮件

class ContactContentEmail extends Mailable
{
    use Queueable, SerializesModels;
    protected $data;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($_data)
    {
        $this->data = $_data;
    }
    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('contact.emails.contact_content')->with([
                'data' => $this->data
            ]);
    }
}
class ContactEmail 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->view('contact.emails.contact');
    }
}

控制器

public function send(ContactFormRequest $request){
     $data = $request->validated();
     dispatch(new SendContactContentEmail($data));
     dispatch(new SendContactEmail($data['mail_address']));
}

配置电子邮件

return [
    'admin' => [
        'kuriyama' => 'xxxx@gmail.com',
        'negishi' => 'aaaa@gmail.com',
    ]
];

环境

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=contact@xxx.com.vn
MAIL_PASSWORD=xxxxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=xxx@xxx.com
MAIL_FROM_NAME="${APP_NAME}"

【问题讨论】:

  • 尝试在您的.env 文件中设置MAIL_FROM_ADDRESS
  • @P.K.Tharindu 我已经有了。我不认为我的设置是错误的。因为它并不总是错误的。它有时工作

标签: laravel laravel-queue laravel-jobs


【解决方案1】:

你能调用这个命令吗?

php artisan config:cache

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多