ユーザーの電子メールIDを含む1000人のメンバーのデータベースがあり、単一の管理者アカウントを使用してデータベース内のすべてのユーザーにメールを送信するためのコードを開発しました-管理者のログインはコードでハードコーディングされました.
ここで、管理者のすべてのログインが別のデータベースに保存され、コードがデータベースからログインを読み取り、メールを送信する次のレベルに進みたいと思います。たとえば、コードは admin#1 ログインを使用して user#1-50 にメールを送信し、admin2 ログインを使用して user#51-100 にメールを送信します。
以下は私が試しているコードで、複数のループに問題があるようです。誰か助けてください。
<?php
error_reporting(E_ALL);
//error_reporting(E_STRICT);
ini_set("display_errors", "on");
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
ini_set('memory_limit', '6500M'); //Maximum amount of memory a script may consume (128MB by default)
date_default_timezone_set('UTC');
require_once('../class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = file_get_contents("contents.html");
$body = preg_replace('/[\]/','',$body);
$mail->IsSMTP();
$mail->Host = "ssl://smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true;
$mail->Port = 465;
$mail->Subject = "Subject";
$mail->AddReplyTo ('example@domain.com', 'test');
$mail->body = $body;
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->IsHTML(true);
$mail->MsgHTML($body);
$con = mysql_connect("localhost","root","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("test") or die(mysql_error()); //Databasename
$query1 = "SELECT * FROM loginids WHERE Count >= 1"; //count is column name in table loginids
$result1 = mysql_query($query1) or die(mysql_error());
$row1 = mysql_fetch_array ($result1);
$Counter = 1;
$startnum1 = 0;
$endnum1 = 0;
while ($Counter <= 3) {
$mail->Username = $row1["UserName"];
$mail->Password = $row1["Password"];
$mail->From = $row1["UserName"];
$mail->FromName = $row1["FromName"];
$startnum1 = $endnum1;
$endnum1 = $startnum1 + 2;
$query2 = "SELECT EmailID FROM dummy Limit $startnum1,$endnum1";
$result2 = mysql_query($query2) or die(mysql_error());
while ($row2 = mysql_fetch_array ($result2)) {
$mail->AddAddress($row2["EmailID"]);
//$mail->AddStringAttachment($row["EmailID"], "contents.html");
if(!$mail->Send()) {
echo "Mailer Error (" . str_replace("@", "@", $row2["EmailID"]) . ') ' . $mail->ErrorInfo . '<br />';
} else {
echo "Message sent From : " .$row1["UserName"]." Message sent to :" . $row2["EmailID"] . ' (' . str_replace("@", "@", $row2["EmailID"]) . ')<br />';
}
$mail->ClearAddresses();
}
$Counter++;
}
?>
こんにちは皆さん、貴重なフィードバックをお寄せいただきありがとうございます。私はまだ学んでいて、やるべきことがたくさんあるようです..それに応じてコード(上記)を更新しましたが、まだメールを送信できません..ループを正しく使用しているかどうかわかりません..コードでやろうとしています.各アカウントを使用して(たとえば)50通のメールを送信したいと思います..3つのメールアカウントがあり、$Counterがアカウント番号をチェックしています。startnum1/endnum1 は、各アカウントが送信する必要がある電子メールの数です。
so $startnum1, $endnum1 should also be changed dynamically for each account #.
for e.g.
account#1, $startnum1=1, $endnum1=50
account#2, $startnum1=51, $endnum1=100
and so on..
今、このコードを試していると、「メーラー エラー (受信者は domain.com) 次の差出人アドレスが失敗しました: gmail.com の送信者 1 : 接続せずに Mail() を呼び出しました」というメッセージが表示されます。