簡體   English   中英

Laravel Queue無法通過Curl發送電子郵件

[英]Laravel Queue cant send email via Curl

我正在嘗試使用laravel Queue

我正在使用以下命令將數據發送到隊列

  $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函數就可以正常工作,但是當我使用作業時,我看到jobs表被填充,然后它進行處理,但是沒有使用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
}

您的handle方法的參數是$data但我只看到正在使用$array_data

您需要在作業的構造函數中而不是在handle函數中設置$data

請參閱此示例https://laravel.com/docs/5.6/queues#class-structure

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

我實際上發現了問題,您看到Curl運行緩慢,因此在que中使用curl時,需要確保為其提供足夠的運行時間,因此將隊列偵聽時間設置為60秒。

php artisan queue:listen --timeout=60

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM