代码之家  ›  专栏  ›  技术社区  ›  Johan

如何向数百个收件人发送邮件?

  •  1
  • Johan  · 技术社区  · 16 年前

    while($data = mysql_fetch_assoc($resultat)){
        ...
        sendMail();
    }
    
    function sendMail(){
        ...
        mail($to, $subject, $text, $headers);
    }
    

    但这并不是我所能理解的记忆效率。脚本应该能够发送到1000多个接收器。

    6 回复  |  直到 16 年前
        1
  •  7
  •   jldupont    16 年前

    在cron作业中添加“便条”。换句话说,编写一个cron作业拾取的文件,并在PHP会话之外执行冗长的操作。

    当然,您可以将PHP用于cron将运行的实际脚本:-)

    我这么说的原因是:你可能不想 暂停PHP会话 挂得太久:授权给外部流程(可能)更有意义。

    还要注意的是,每个PHP会话都非常重要 :委派给外部进程可能会减轻这种压力。

        2
  •  1
  •   Chris Kloberdanz    16 年前

    你说你不想安装一个框架,但我不认为PHP的邮件是为快速有效地发送大量电子邮件而构建的。我想尝尝梨的 Mail_Queue 或 Mail .

        3
  •  1
  •   MightyE    16 年前

        4
  •  0
  •   F.P    16 年前

    AJAX可能是这种操作的最佳选择。

    使用AJAX,您可以调用一个小的*.php文件,其中只包含向下一个用户发送电子邮件的函数。这就是所谓的每一秒,你就完了。

        5
  •  0
  •   Guss    14 年前

    有几种方法可以解决这个问题,也许与邮件列表管理器一起工作的想法可能是“正确的事情(tm)”——使用Listman、Sympa、Majordomo或其他数百个邮件列表管理器之一设置邮件列表。通常很容易从PHP脚本管理它,然后向邮件列表地址发送一封电子邮件,让经理来完成其余的工作。

    这就是说,这个解决方案需要一些非琐碎的设置,并且当您需要动态地生成目标电子邮件(即每个电子邮件被发送到不同的电子邮件地址子集)时,它的严重缺点是很难实现。

    另一个更简单的方法是对justastefan的答案进行修改(很遗憾它被否决了):它有严重的问题,但可以让它发挥作用。

    您需要做的是确保您的PHP脚本 mail() postfix 或 exim . 然后,当您要发送群发电子邮件时,请为发送邮件创建密件抄送邮件头列表:

    $bcc = array();
    while($data = mysql_fetch_assoc($resultat)){
        $bcc[] = "Bcc: {$data['email']}";
    }
    sendMail($bcc);
    
    function sendMail($extraheaders){
        ...
        mail($to, $subject, $text, array_merge($headers, $extraheaders));
    }
    

    邮件() 直接交付给。

    1. 一定要确保你有一个有效的'收件人'地址,可以接受(可能会悄悄忽略)电子邮件-每封电子邮件也将发送到那里。这个“收件人”地址看起来应该是合法的。
    2. 确保设置一个有效的“返回路径”标题和一个可以接受电子邮件跳转的有效电子邮件地址-丢失或无效的“返回路径”是自动电子邮件失败的唯一最可能的原因。
        6
  •  -4
  •   justastefan    16 年前
    $to='user1@asdf.com;user2@asdf.com;user3@asd.fi;...';
    
    推荐文章