我正在尝试使用来自数据库的数据使用PHP发送电子邮件。我遇到的问题是,每个后续结果匹配都会合并电子邮件。 因此,如果我有3个具有相同匹配条件的用户,例如,是/是,则第一封电子邮件是干净的,第二封电子邮件包含第一封电子邮件和第二封电子邮件的内容,第三封邮件包含第一封,第二封包含第三封电子邮件。我不确定它为什么要组合消息,但显然希望它能够停止。 : - )
<?php
$servername = "intentionally empty";
$username = "intentionally empty";
$password = "intentionally empty";
$dbname = "intentionally empty";
$tblname = "intentionally empty";
$email_to = "";
$email_subject = "";
$email_message = "";
$email_from = "";
$conn = mysqli_connect($servername, $username, $password, $dbname) or die("Unable to Connect to '$dbhost' - Please email support@domain.com");
$sql = "SELECT * FROM $tblname WHERE Active='Yes' AND Reqested='Yes'";
$result = mysqli_query ($conn, $sql);
if (!mysqli_query($conn, $sql))
{
echo "Error: " . mysqli_query_error();
}
while($row = mysqli_fetch_array($result)){
$first_name = $row['First'];
$last_name = $row['Last'];
$dob = $row['DOB'];
$variableA = $row['VarA'];
$variableB = $row['VarB'];
$email_to = $row['Email'];
$email_from = "support@domain.com";
$email_subject = "Reminder: Requested information for $dob - $varA";
$email_intro .= "Hello $first_name $last_name,\n";
$email_intro .= "\n";
$email_intro .= "This is your monthly request reminder that for $dob - $varA\n";
$email_intro .= "\n";
$email_var .= "If you have already sent your updates then you can disregard.\n";
$email_end .= "\n";
$email_end .= "Please let us know if you have any question.\n";
$email_end .= "\n";
$email_end .= "Thank you,\n";
$email_end .= "Management.\n";
$email_message .= "$email_intro$email_var$email_end";
// create email headers
if (@mail($email_to, $email_subject, $email_message, 'From:' . $email_from));
echo 'Email sent to: ' . $email_to. '<br>';
}
?>
答案 0 :(得分:2)
您没有在循环开始时重置$email_message
或$email_intro
个变量。添加
$email_message = $email_intro = '';
位于while()
循环的顶部,每次迭代都会清除。
答案 1 :(得分:0)
成功发布电子邮件已发送邮件,您可以重新初始化或设置变量$email_message as Null
的值。