#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