Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将邮件发送到多个地址,但按20-30分组以避免php中的垃圾邮件?_Php - Fatal编程技术网

如何将邮件发送到多个地址,但按20-30分组以避免php中的垃圾邮件?

如何将邮件发送到多个地址,但按20-30分组以避免php中的垃圾邮件?,php,Php,我想在php中批量发送邮件以避免垃圾邮件,但我仍然知道如何避免垃圾邮件 我有一个返回电子邮件地址的函数 public function getEmailAddress(){ $sql = "SELECT DISTINCT email,login FROM account.account"; $stmt=$this->o_db->prepare($sql); $stmt->execute(); $result = $

我想在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;
    }
如何发送20-30个分组的电子邮件,但最终发送给所有人?还是有别的办法


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

将你的地址数组分块。看一看。该函数允许在
$to
参数中使用多个地址

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

        return $result;
    }
因此:


您可以创建一个表并存储发送电子邮件的历史记录(一列包含用户id,另一列包含发送电子邮件的时间)。然后在PHP脚本中执行20-30次迭代的“for循环”,向新表中未找到的用户发送电子邮件(电子邮件历史记录)。然后,您应该使用cron作业以一定的间隔(30分钟或1小时)运行脚本。

在下面的代码中,我们将数组分块为20-20个值,然后将它们创建为一个字符串,并使用“,”以这种方式,每个循环将向20封电子邮件发送电子邮件。 注: 请相应地更改变量名

public function sendVoucherCode($array2,$voucher){ 
    $list = "";
    foreach($array2 as $recipient){
        if($recipient['email'] != NULL){
           $list .= $recipient['email'].','; 
        }
    }
    $email_array = explode(",",$list);
    $GroupingEmail = array_chunk($email_array,20);//Add this line
    foreach($GroupingEmail as $email)
    {
        $sendEmailTo = impload(',',$email);//Add this line
        $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($sendEmailTo,$subject,$msg,$headers);//change this line
    }

    return true;
}
公共函数sendVoucherCode($array2,$voucher){
$list=“”;
foreach($array2作为$recipient){
如果($recipient['email']!=NULL){
$list.=$recipient['email'].',';
}
}
$email_array=explode(“,”,$list);
$GroupingEmail=array\u chunk($email\u array,20);//添加此行
foreach($GroupingEmail作为$email)
{
$sendmailto=impload(“,”,$email);//添加此行
$mail\u-ownStaff@blabla.ro';
$subject='凭证卡杜';
$msg='';
$msg.='Ai primit un cod促销服务valoareaza'。$value.'monee.。“
”; $msg.='Adaugăcodul:'.$concedure.'n meniul validare concedure pentru a primii monedele!'.“
”; $msg.='everăvalabilăde la'的矿藏。$当前日期。'p–năla'.$日经验。
“; $msg.=“

”; $msg.='Acest email este generat automat.Vărugăm sănu răspundeți!'.“
”; $msg.=“网站管理员->亚历克斯”; $msg.=''; $headers=“From:$mail\u own\r\n”; $headers.='内容类型:text/html;字符集=utf-8'; $success=mail($sendmailto,$subject,$msg,$headers);//更改此行 } 返回true; }
我是用梨:邮件做的。 数百封电子邮件完美发送,但需要免费访问smtp(未经授权):

function send_email($to, $from, $subject, $body) {
    require_once "Mail.php";
    require_once "Mail/mime.php";    
    $host = "your.smtp.server.com";

    $headers['From'] = $from;
    $headers["Reply-To"] = $from;
    $headers["Return-path"] = $from;
    $headers['To'] = $to;
    $headers['MIME-Version'] = '1.0';
    $headers['X-Mailer'] = 'MUA name';
    $headers['Subject'] = $subject;

    $mime_params = array(
        'text_encoding' => '7bit',
        'text_charset'  => 'UTF-8',
        'html_charset'  => 'UTF-8',
        'head_charset'  => 'UTF-8'
    );

    $mime = new Mail_mime();
    $mime->setHTMLBody($body);
    $body = $mime->get($mime_params);
    $headers = $mime->headers($headers);
    $smtp = Mail::factory('smtp', array ('host' => $host));
    $mail = $smtp->send($to, $headers, $body);
    if (PEAR::isError($mail)) {
        return false;
    } else {
        return true; 
    }
};
形成http正文电子邮件并获取json状态。 如果您想通过软件包一次发送所有信件,您需要在一个圆圈中调用此代码,但请记住,大多数smtp服务器对同时发送的收件人数量和每单位时间发送的信件数量都有限制

// form mail header
$to = $recipient_address;
$from = "address@company.com";
$subject = "My subject";
// form mail body
$message = "<html><head><title>MyTitle</title></head><body>";
$message .= "<p>Text1</p>";
$message .= "<p>Text2</p>";
$message .= "</body></html>\r\n";
// send mail
if ( send_email($to, $from, $subject, $message) ) {
    echo '{ "success": true, "msg": "OK" }';
} else {
    echo '{ "success": false, "msg": "We have a problem" }';
};
//表单邮件头
$to=$recipient\u地址;
$from=”address@company.com";
$subject=“我的主题”;
//表格邮件正文
$message=“MyTitle”;
$message.=“Text1

”; $message.=“Text2

”; $message.=“\r\n”; //寄信 如果(发送电子邮件($to、$from、$subject、$message)){ 回显“{”success:true,“msg”:“OK”}”; }否则{ 回音“{”success:false,“msg”:“我们有问题”}”; };
您可以试试密件抄送模式,然后您可以一次发送给许多人。
当发送邮件时,我们可以设置为(收件人)、抄送(每个人都可以知道抄送用户)、密件抄送(受保护),它们都允许有多个地址,如mail-1;mail-2…

是的,我现在读了,但我忘了说在5分钟内一次发送电子邮件。哈哈,我回来了。如果你遗漏了问题的一个重要部分,你能怪我没有给你最好的解决方案吗不,但如果您在没有时间的情况下分批或全部发送,则不被视为垃圾邮件?:)现在,为了防止您的电子邮件被视为垃圾邮件,您需要通过@DarkBee ok配置和提供更多有关此主题的信息,但我不知道如何设置此项。。我有一个网络主机,有一个共享cpanel。。我想用一个促销代码向所有数据库发送一次或多少封我需要的邮件(但很少发送)。你可以创建一个免费帐户来解决你的问题-从
localhost
发送邮件现在是一个真正的难题,特别是当您不使用任何库,如
phpmailer
swiftmailer
来处理邮件时,但是如果我发送分组邮件,但时间没有差异,则不被视为垃圾邮件?这和一次发送所有邮件不一样吗?你认为一次向许多人发送邮件会产生垃圾邮件吗?尝试发送给一个人,并检查它是否是垃圾邮件。垃圾邮件依赖于许多方面。最重要的是,垃圾邮件是由html中的内容引起的。我已经检查过了,如果我发送到1、2、3,也可以,但是,如果我发送到所有数据库,我就被阻止了。。
// form mail header
$to = $recipient_address;
$from = "address@company.com";
$subject = "My subject";
// form mail body
$message = "<html><head><title>MyTitle</title></head><body>";
$message .= "<p>Text1</p>";
$message .= "<p>Text2</p>";
$message .= "</body></html>\r\n";
// send mail
if ( send_email($to, $from, $subject, $message) ) {
    echo '{ "success": true, "msg": "OK" }';
} else {
    echo '{ "success": false, "msg": "We have a problem" }';
};