Laravel Queue не может отправлять электронную почту через Curl

Я пытаюсь использовать очередь laravel

Я использую следующую команду для отправки данных в мою очередь

  $data = array(
        'from'=> $mailfromname .'<'.$mailfrom.'>',
        'to'=>$toname.'<'.$to.'>',
        'subject'=>$subject,
        'html'=>$html,
        'text'=>$text,
        'o:tracking'=>'yes',
        'o:tracking-clicks'=>'yes',
        'o:tracking-opens'=>'yes',
        'o:tag'=>$tag,
        'h:Reply-To'=>$replyto
    );

Затем я отправляю массив в свой ExampleJob

 Queue::push(new ExampleJob($data)); 

У меня есть в дескрипторе моей работы функция curl, которая принимает $ data

Итак, моя проблема здесь в том, что моя функция curl работает нормально, если я отправляю электронные письма без использования заданий, но когда я использую задания, я вижу, что таблица заданий заполняется и затем обрабатывается, но электронная почта не отправляется с использованием curl ... кто-нибудь знает, почему это?

public function handle($data)
{
     $session = curl_init(MAILGUN_URL.'/messages');
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($session, CURLOPT_USERPWD, 'api:'.MAILGUN_KEY);
curl_setopt($session, CURLOPT_POST, true);
curl_setopt($session, CURLOPT_POSTFIELDS, $data);
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_ENCODING, 'UTF-8');
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($session);
curl_close($session);
$results = json_decode($response, true);
return $results
}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
577
3

Ответы 3

Параметр для вашего метода обработки - $data, но я вижу, что используется только $array_data.

вам нужно установить $data в конструкторе вашей работы, а не в функции дескриптора

обратитесь к этому примеру https://laravel.com/docs/5.6/queues#class-structure

public function __construct($data) { $this->data = $data; }

Я действительно обнаружил проблему: вы видите, что Curl работает медленно, поэтому при использовании curl в ques вам необходимо убедиться, что вы даете ему адекватное время выполнения, поэтому установите время ожидания очереди на 60 секунд.

php artisan queue:listen --timeout=60

Другие вопросы по теме