我目前正在开发一个项目,根据blast电子邮件。现在,我使用cronjob每隔一段时间处理一次电子邮件。在我的sql中,我选择了一次发送600封电子邮件,但我的服务器在1小时内只支持200封电子邮件。因此,我创建了3个不同的SMTP电子邮件爆炸电子邮件速度更快,每个电子邮件有爆炸200电子邮件在每1个小时。我下一步需要做的是在循环中计数,从数据库中选择的前200个电子邮件传递给第一个SMTP电子邮件,下面的400个传递给另一个2个SMTP电子邮件。但我发现我的代码有一些问题,因为我正在做的是在一个循环中一个接一个地运行所有数据库电子邮件。这意味着$count I赋值为into循环将在每个循环中仅运行一次。这将导致我的电子邮件不能通过3个不同的电子邮件发送1次。那么,在发送之前,我是否有必要使用数组为每200封邮件存储不同的数据库电子邮件?我的意思是在另一个循环中定义3个不同的数组,然后独立运行3个不同的数组。如下所示:
for($i = 0; $i < count($database); $i++){
if($i < 200){
$array1[] = $row['email'];
}
else if($i < 400){
array2[] = $row['email'];
}
else{
array3[] = $row['email'];
}
}这是我在使用数组时的想法,我将在将所有数据库电子邮件存储到上面的数组中之后使用for循环。但是,有没有其他方法可以同时通过3个不同的电子邮件发送电子邮件?
下面是我所做的,由于循环的原因,这种方式不会是我想要的:
<?
require_once "lib/base.inc.php";
$arrResult = $oAdminEmail->getQueEmail();
$count = 0 ;
for($i=0; $i<count($arrResult); $i++)
{
$count++;
if($count < 200){
$smptusername = "email1";
$smptpassword = "password";
$smptport = "587";
$email = $arrResult[$i]['contact_email'];
$name = null;
$message = $arrResult[$i]['message'];
$subject = $arrResult[$i]['subject'];
$sendMail = $eMailer->sendEDM($email,$name,$subject,$message,$smptusername,$smptpassword,$smptport);
$iId = $arrResult[$i]['id'];
if ($sendMail)
{
$update['status'] = 1;
$update_edm = $oAdminEmail->updateEmailStatus($update,$iId);
}
}
elseif($count < 400 ){
$smptusername = " email2";
$smptpassword = "password";
$smptport = "465";
$email = $arrResult[$i]['contact_email'];
$name = null;
$message = $arrResult[$i]['message'];
$subject = $arrResult[$i]['subject'];
$sendMail = $eMailer->sendEDM($email,$name,$subject,$message,$smptusername,$smptpassword,$smptport);
$iId = $arrResult[$i]['id'];
if ($sendMail)
{
$update['status'] = 1;
$update_edm = $oAdminEmail->updateEmailStatus($update,$iId);
}
}
else{
$smptusername = "email3";
$smptpassword = "password";
$smptport = "465";
$email = $arrResult[$i]['contact_email'];
$name = null;
$message = $arrResult[$i]['message'];
$subject = $arrResult[$i]['subject'];
$sendMail = $eMailer->sendEDM($email,$name,$subject,$message,$smptusername,$smptpassword,$smptport);
$iId = $arrResult[$i]['id'];
if ($sendMail)
{
$update['status'] = 1;
$update_edm = $oAdminEmail->updateEmailStatus($update,$iId);
}
}
}
?>感谢您的帮助。
发布于 2014-04-10 12:26:20
您可以将电子邮件帐户保存在数组中
$ArrEmailAccount = array(
array('Username'=>'email1','Password'=>'password','Port'=>587),
array('Username'=>'email2','Password'=>'password','Port'=>465),
array('Username'=>'email3','Password'=>'password','Port'=>465)
);然后执行for循环,每次达到200封电子邮件时都会更改帐户。
for ($i=0; $i<count($arrResult); $i++) {
if ($i % 200 == 0) {
$EmailCount = $i/200;
}
. . .
$sendMail = $eMailer->sendEDM($email,$name,$subject,$message,$ArrEmailAccount[$EmailCount]['Username'],$ArrEmailAccount[$EmailCount]['Password'],$ArrEmailAccount[$EmailCount]['Port']);
. . .
}根据需要添加任意数量的帐户以容纳更多电子邮件地址。
https://stackoverflow.com/questions/22978186
复制相似问题