php - 如何将邮件发送到多个地址但按 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 上被阻止
解决方案
将您的地址数组分块。看看array_chunk。mail函数允许参数中有多个地址$to
。
所以:
$addresses = array_chunk($list, 20);
foreach( $addresses as $group ){
...
mail(implode(',', $group), $subject, ...
推荐阅读
- javascript - 如何从 Angularjs 的数组中删除某个对象
- php - PHPunit 在 Laravel 的“工匠修补匠”中不起作用
- web-scraping - Web Scraping - 当标记不同时如何抓取?
- regex - 无法使用正则表达式获取输出
- laravel - Laravel 从列中获取频率
- c++ - 无法在 MinGW 安装管理器中安装软件包
- java - E/AndroidRuntime: 致命例外: Firebase-MyFirebaseMessagingService Android Studio
- javascript - 如何在打开的图层 3 中添加搜索框
- javascript - 检查值是否在多维数组中
- php - Laravel 使用 Controller 和 web.php 中的 Session