【问题标题】:Laravel Queue cant send email via CurlLaravel Queue 无法通过 Curl 发送电子邮件
【发布时间】:2023-03-25 06:41:01
【问题描述】:

我正在尝试使用 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)); 

在我的工作句柄中,我有一个接受 $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 laravel curl queue


    【解决方案1】:

    您的句柄方法的参数是$data,但我只看到$array_data被使用。

    【讨论】:

      【解决方案2】:

      您需要在作业的构造函数中设置$data,而不是在句柄函数中

      参考这个例子 https://laravel.com/docs/5.6/queues#class-structure

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

      【讨论】:

        【解决方案3】:

        我实际上发现了这个问题,你看到 Curl 很慢,所以在 ques 中使用 curl 时,你需要确保给它足够的运行时间,因此将队列侦听时间设置为 60 秒。

        php artisan queue:listen --timeout=60
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-30
          • 1970-01-01
          • 2013-02-21
          • 2018-03-21
          • 2018-07-08
          • 1970-01-01
          • 1970-01-01
          • 2018-01-21
          相关资源
          最近更新 更多