Laravel — невозможно отправить сообщение без адреса отправителя

#laravel #laravel-queue #laravel-jobs

#laravel #laravel-очередь #laravel-задания

Вопрос:

У меня проблемы с отправкой нескольких заданий в Laravel.

Иногда все работает нормально.

Иногда я получал это сообщение cannot send message without a sender address в failed_job таблице, и работало только 1.

Иногда оба не работают.

И это в моем локальном, но на сервере оно вообще не работает.

Я пытаюсь очистить кеш, конфигурацию, все, но это просто не работает вообще.

И я не думаю, что это потому, что мои настройки .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',
    ]
];
  

ENV

 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}"
  

Комментарии:

1. Попробуйте установить MAIL_FROM_ADDRESS в вашем .env файле

2. @P.K.Tharindu У меня это уже есть. Я не думаю, что моя настройка неверна. Потому что это не всегда ошибка. иногда это работает

Ответ №1:

Можете ли вы вызвать эту команду?

 php artisan config:cache