0

我正在开发一个massmail 脚本,该脚本向特定数据库中存在的每个电子邮件ID 发送一封电子邮件。但是有一些问题。

就像我有以下数据库:

id   email     link
1    a@bc.com  bc.com
2    b@cd.com  cd.com

并假设邮件内容是:'Testing this script'

脚本完美地向 a@bc.com 发送电子邮件,但第二次发送电子邮件时,即发送到 b@cd.com,内容会翻倍。

我的意思是第二个收件人收到这样的电子邮件:

测试这个脚本

测试这个脚本

第三个收件人收到一封内容重复三次的电子邮件,第四个收件人收到了四次,以此类推。

该脚本从数据库中的电子邮件字段中获取电子邮件地址并向其发送电子邮件。

我的代码:

<?
  include "header.php"; 
  include "config2.php"; 

$subject="Massmail";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
mysql_connect($server, $db_user, $db_pass)
      or die ("Database CONNECT Error"); 
        $resultquery = mysql_db_query($database, "select * from $table");       
    while ($query = mysql_fetch_array($resultquery)) 
    { 
        $mailto=$query[$table_email];
        $domain=$query[$table_link];
$domain2 = str_replace(array('http://','HTTP://','Http://'), '',$domain);
$handle = fopen("http://$domain2","r") or die("Unable to open link ( $domain ). <a href='javascript:history.go(-1);'>Go back</a> and please try again  ");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
$contents = str_replace('window.location = "/abc.html"','window.location = ""',$contents);
$contents = mb_convert_encoding($contents, "HTML-ENTITIES", "auto");
}
$i = md5(uniqid(rand(), true)) . '.' . html;
$fh = fopen("/home/host/public_html/content/$i", "w");
fwrite($fh, $contents);
fclose($fh);
$filename = '/files/$i';
$message1 .= "Testing Mail Script Version 2";
        mail($mailto, $subject, $message1, $headers, "-f" . 'noreply@domain.com');
        echo 'Mail sent to '.$mailto.'<br>'; 
        sleep($seconds);
    }
  include "footer.php";    
  ?>

我试图回显必须发送的邮件,我得到了这个:

To: a@bc.com

Subject: Massmail

Message:
Testing mail script
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
to: b@cd.com

Subject: Massmail

Message:
Testing mail scriptTesting mail script
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

对你的帮助表示感谢。提前致谢

4

4 回答 4

0

在代码行中: $message1 .= "Testing Mail Script Version 2"; 句点是一个连接,因此每次循环它时,都会再次复制该消息。

于 2013-05-07T03:17:00.533 回答
0

同意。听起来您的循环运行不正常?如果您无法发布完整的代码,请尝试发布抽象,以便我们诊断您的问题。

如果你不能,我会根据你拥有的电子邮件地址的数量来研究循环,而不是一些任意的计数器。这可能会帮助你。

于 2013-05-07T01:18:38.693 回答
0

没关系,我修好了。@Pirion 的帖子帮助了我。我变了

$message1 .= "Testing Mail Script Version 2";

$message = "Testing Mail Script Version 2";

一切都很完美。非常感谢你们帮助我。

于 2013-05-07T11:41:17.313 回答
0

假设这是你的桌子。id、email、link、message 的结构如下:

id     email         message 
1    a@test.com   hello, how are you doing..
2    b@test.com   hey, dude this is me..
3    c@test.com   we are sending you this...

现在,假设您有100记录。我要做的是(假设$result是一个 mysql 数组从mysqlex返回所有结果SELECT * FROM mail...

我会尝试:

for($i=0; $i <= count($result); $i++){

     $send = mail($result['to'], $result['subject'],
                  $result['message'], $result['headers']);

     if(!$send){
       echo 'e-mail, sending has stopped';
       break;
        }
    else{
        echo 'all e-mails are sent successfully'; }
     }
于 2013-05-07T01:25:26.130 回答