Laravel 5一次向多个用户发送邮件

Posted

技术标签:

【中文标题】Laravel 5一次向多个用户发送邮件【英文标题】:Laravel 5 sending mail to multiple users at once 【发布时间】:2018-09-08 04:22:21 【问题描述】:

我正在尝试向所有用户发送邮件。但我不知道怎么做。在我的控制器中,我做了这个。

public function send_mail()

    $mails = Joinus::all();
    $array = array();
    $allmails = array();
    foreach ($mails as $mail)
    
        $allmails = array_push($array, $mail->email);

    ;
    Mail::to($allmails)->send((new SendMail(new Joinus('email')))->delay(30));

我收到所有类型的错误。最后一个是

__construct() must be of the type array

在我的 SendMail.php

public function __construct($email)

    $this->email = $email;

我浪费了我的一天,却做不出来。我非常感谢您的帮助。提前感谢。

【问题讨论】:

您需要更具体地了解所有类型的错误。 如果遇到各种错误,最好从***.com/questions/12769982/… 请检查我下面的答案。 如果您不希望您的电子邮件的所有收件人看到所有其他电子邮件地址,您应该考虑使用Mail::bcc($emails)->send(...) 而不是Mail::to($emails)->send(...)。如果您要求每个收件人在电子邮件中获得一个单独的链接(如注册链接),那么无论如何您都必须为每个地址发送一封邮件 - 这意味着上述解决方案都不起作用。 当我说所有的错误之王。我的意思是我工作了很多。但是现在这里没有代码。这是我做的最后一件事。错误与邮件系统有关。我只是不知道如何发送群发邮件。 【参考方案1】:
public function send_mail()

    $mails = Joinus::pluck('email')->toArray();
    foreach ($mails as $mail)
    
        Mail::to($mail)->send((new SendMail(new Joinus($mail)))->delay(30));

    ;


【讨论】:

在答案中添加一些描述来解释问题和修复。【参考方案2】:

$allmails = array_push($array, $mail->email); 错误

正确答案是array_push($array, $mail->email);

array_push($array, $mail->email); 这是返回一个数组。

$allmails = array_push($array, $mail->email); 但这是返回 int 值。

【讨论】:

【参考方案3】:

你可以试试这个。

public function send_mail()

    $mails = Joinus::all();
    $array = array();
    $allmails = array();
    foreach ($mails as $mail)
    
        $allmails = array_push($array, $mail->email);

    ;
    Mail::to($allmails)->send(new SendMail(new Joinus('email')))->delay(30);

谢谢,

【讨论】:

谢谢。但这与括号无关。

以上是关于Laravel 5一次向多个用户发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在cakephp中一次发送多封电子邮件

如何在 laravel 中发送多个域的电子邮件

Laravel 5.5 不发送电子邮件

Laravel 5.4 - 单击电子邮件中的验证链接时未传递或发送电子邮件验证令牌令牌。

PHP 如何通过 PHP 一次发送 100 封电子邮件? [复制]

在 Laravel 中使用表单和多个地址发送电子邮件