【发布时间】:2017-08-03 10:24:53
【问题描述】:
我只是在使用 phpmailer。我想生成多条消息并将它们发送给多个收件人。但是,generateMessage 函数()只是发送给收件人列表中的第一个收件人。 这是我的代码,感谢您的帮助。
require_once("class.phpmailer.php");
set_time_limit(0);
$wh = implode("', '", $abc);
echo "aaa" . $wh;
//echo $email;
$db = DB::getInstance();
$query1 = $db->query("SELECT * FROM tablea WHERE Location IN ('$wh')");
$result1 = $query1->results();
$query2 = $db->query("SELECT * FROM tableb WHERE Location IN ('$wh')");
$result2 = $query2->results();
$query3 = $db->query("SELECT * FROM tablec");
$result3 = $query3->results();
foreach ($result3 as $b) {
$username = $b->email;
$password = $b->password;
$Times = $b->P2_Time;
}
$minutePerDay = (24 * 60) / $Times;
echo $minutePerDay;
foreach ($result1 as $r) {
$TimeP2SendE = $r->Timea;
break;
}
foreach ($result2 as $r) {
$TimeP2SendG = $r->Timea;
break;
}
$currentTime = date('Y-m-d H:i:s');
$TimeDifferentE = (strtotime($currentTime) - strtotime($TimeP2SendE)) / 60;
$TimeDifferentG = (strtotime($currentTime) - strtotime($TimeP2SendG)) / 60;
if ($TimeDifferentE >= $minutePerDay or $TimeDifferentG >= $minutePerDay) {
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'ssl';
$mail->Username = $username;
$mail->Password = $password;
$mail->AltBody = " ";
$mail->From = $username;
$mail->FromName = 'Noti';
$mail->clearAddresses();
$mail->AddAddress($email);
$mail->Subject = $title;
$mail->IsHTML(true);
$mail->Body = '<html><body>';
$mail->Body .= "<h3>Information </h3>";
$mail->Body .= '<table class="table table-border">';
$mail->Body .= "</table>";
$mail->Body .= "</body></html>";
if (!$mail->Send()) {
echo "Error sending: " . $mail->ErrorInfo;
} else {
echo "Letter is sent";
}
}
我已运行此功能 4 次以发送给 4 个不同的收件人,但它只发送给第一个收件人。
【问题讨论】:
-
为什么不添加一个包含所有联系人的数组,从 1 个联系人到任意号码,并为每个联系人循环 AddAddress 函数。
-
从哪里来
$email在这行$mail->AddAddress($email);? -
我知道如何创建一个包含所有联系人的数组,但是在我的情况下,我不会为收件人列表发送相同的电子邮件,例如:电子邮件 A 给收件人 A,电子邮件 B 给收件人B ......关于收件人,我必须通过多个条件查询才能选择合适的收件人,所以我编写了另一个函数来选择电子邮件,然后我会用我找到的电子邮件调用函数generateMessage。我不会把所有东西都写在 1 个函数中,因为当它运行时,它需要超过 10 秒并出现超时错误。