2017-08-28 190 views
0

我的任務是向我的網站的用戶羣發電子郵件。如何用Laravel和Mailgun發送大量電子郵件

我想收取我網站所有用戶的電子郵件,並向他們發送消息,即批量電子郵件。

當用戶註冊到我的網站時,我正在使用mailgun服務發送確認電子郵件。下面是我使用的一些代碼的一個例子。

我想知道我是否可以使用類似的代碼發送批量電子郵件。

public function sendEmail($sub) 
{ 
    $user = $this; 
    Mail::send('mail.confirm',['user' => $user, $sub => $sub], function($mail) use ($user,$sub) { 
    $mail->from('[email protected]', 'Website'); 
    $mail->to($user->email, $user->name)->subject($sub . ' Confirm Website Email'); 
    }); 
} 

有什麼想法?

+0

我不知道PHP sdk窩但是Mailgun本身具有列出高達250萬收件人的概念。您需要先添加它們,然後發送到列表別名將向所有收件人發送副本。 – NoNameProvided

回答

0

我建議你使用隊列這個充塞

讓像下面

class SendEmail extends Job implements ShouldQueue 
{ 
    use InteractsWithQueue, SerializesModels; 
    public $data , $email; 

    /** 
    * Create a new job instance. 
    * 
    * @return void 
    */ 
    public function __construct($data,$email) 
    { 
     $this->data=$data; 
     $this->email=$email; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 

     Mail::send('mail.confirm', [ 
        'title' => $this->data['body'] , 
        'body' => $this->data['body'], 
        , 
       ], function ($message) { 
        $message->from('[email protected]', 'Test Notification'); 
        $message->to($this->email)->subject($this->data['subject'])); 
       } 
       ); 


    } 

} 

從控制器說它是隊列文件

use App\Jobs\SendEmail; 
class EmailController extends Controller { 

    public function send() { 
     $data = array 
      (
      'title' => 'title', 
      'body' => 'body', 
      'subject' => 'subject' 
     ); 

     $emails=array("[email protected]","[email protected]") 
     foreach($emails as $val){ 
      $this->dispatch(new SendAlertEmail($data, $val)); 
     } 


} 

請檢查https://laravel.com/docs/5.4/queueshttps://scotch.io/tutorials/why-laravel-queues-are-awesome

相關問題