[英]I cant send an email on Shared Hosting via laravel smtp, is there a way around this?
[英]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.