如何用Laravel和Mailgun发送大量电子邮件

问题描述:

我的任务是向我的网站的用户群发电子邮件。如何用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

我建议你使用队列这个充塞

让像下面

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