首页 > 解决方案 > 如何将邮件发送到多个地址但按 20-30 分组以避免在 php 中发送垃圾邮件?

问题描述

我想在 php 中批量发送邮件以避免垃圾邮件,但我仍然知道如何。

我有这个返回电子邮件地址的函数

public function getEmailAddress(){
        $sql = "SELECT DISTINCT email,login FROM account.account";
        $stmt=$this->o_db->prepare($sql);
        $stmt->execute();
        $result = $stmt->fetchAll();

        return $result;
    }

此功能用于发送电子邮件:

public function sendVoucherCode($array2,$voucher){ 
        $list = "";
        foreach($array2 as $recipient){
            if($recipient['email'] != NULL){
               $list .= $recipient['email'].','; 
            }
        }
        $email_array = explode(",",$list);
        foreach($email_array as $email)
        {
            $mail_own='Staff@blabla.ro';
            $subject = 'Voucher cadou ';
            $msg = '<html><body>';
            $msg .= 'Ai primit un cod promotional care valoareaza <font color="darkorange">'.$value.'</font> monede.  ' ."<br>";
            $msg .= 'Adaugă codul: <b>'.$voucher.'</b> în meniul validare voucher pentru a primii monedele!'."<br>";
            $msg .= 'Ține mine ofertă valabilă de la <b>'.$current_date.'</b> până la <b>'.$day_exp."</b><br>";
            $msg .= "<br>"."<br>";
            $msg .= 'Acest email este generat automat. Vă rugăm să nu răspundeți!'."<br>";
            $msg .= "WebMaster -> Alex";
            $msg .= '</body></html>';
            $headers = "From: $mail_own\r\n";
            $headers .= 'Content-Type: text/html; charset=utf-8';
            $success = mail($email,$subject,$msg,$headers);
        }

        return true;
    }

所以我称他们为:

$array2 = $this->getUserFunctions()->getEmailAddress();
$this->getUserFunctions()->sendVoucherCode($array2,$voucher);

如何发送按 20-30 分组但最终发送给所有人的电子邮件?还是有其他方法?

编辑:当我发送到 100 个地址时,我在 ip 上被阻止

标签: php

解决方案


将您的地址数组分块。看看array_chunkmail函数允许参数中有多个地址$to

所以:

$addresses = array_chunk($list, 20);
foreach( $addresses as $group ){
    ...
    mail(implode(',', $group), $subject, ...

推荐阅读