特定のデータベースに存在するすべての電子メールIDに電子メールを送信する大量メールスクリプトに取り組んでいます。しかし、いくつかの問題があります。
次のデータベースがあるように:
id email link
1 a@bc.com bc.com
2 b@cd.com cd.com
そして、メールの内容が「このスクリプトをテストしています」であるとします。
スクリプトは電子メールを a@bc.com に完全に送信しますが、電子メールを 2 回目に送信すると、つまり b@cd.com にコンテンツが 2 倍になります。
つまり、2 番目の受信者は次のような電子メールを受け取ります。
このスクリプトのテスト
このスクリプトのテスト
3 番目の受信者は内容が 3 回繰り返される電子メールを受信し、4 番目の受信者はそれを 4 回受信するというように繰り返されます。
スクリプトは、データベースの電子メール フィールドから電子メール アドレスを取得し、電子メールを送信します。
私のコード:
<?
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
どうぞよろしくお願いいたします。前もって感謝します