首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了将数据库数据放入数组之外,在数量之前传递数据的另一种方式是什么?

除了将数据库数据放入数组之外,在数量之前传递数据的另一种方式是什么?
EN

Stack Overflow用户
提问于 2014-04-10 11:36:23
回答 1查看 72关注 0票数 0

我目前正在开发一个项目,根据blast电子邮件。现在,我使用cronjob每隔一段时间处理一次电子邮件。在我的sql中,我选择了一次发送600封电子邮件,但我的服务器在1小时内只支持200封电子邮件。因此,我创建了3个不同的SMTP电子邮件爆炸电子邮件速度更快,每个电子邮件有爆炸200电子邮件在每1个小时。我下一步需要做的是在循环中计数,从数据库中选择的前200个电子邮件传递给第一个SMTP电子邮件,下面的400个传递给另一个2个SMTP电子邮件。但我发现我的代码有一些问题,因为我正在做的是在一个循环中一个接一个地运行所有数据库电子邮件。这意味着$count I赋值为into循环将在每个循环中仅运行一次。这将导致我的电子邮件不能通过3个不同的电子邮件发送1次。那么,在发送之前,我是否有必要使用数组为每200封邮件存储不同的数据库电子邮件?我的意思是在另一个循环中定义3个不同的数组,然后独立运行3个不同的数组。如下所示:

代码语言:javascript
复制
    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个不同的电子邮件发送电子邮件?

下面是我所做的,由于循环的原因,这种方式不会是我想要的:

代码语言:javascript
复制
<?
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);
            }
            } 
            }



?>

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-04-10 12:26:20

您可以将电子邮件帐户保存在数组中

代码语言:javascript
复制
$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封电子邮件时都会更改帐户。

代码语言:javascript
复制
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']);
    . . .
}

根据需要添加任意数量的帐户以容纳更多电子邮件地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22978186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档