我有这个脚本发送一封包含我数据库信息的电子邮件。用户可以在数据库中包含1个以上的项目及其位置。因此,当我清空与用户匹配的行时,发送的电子邮件数量等于他们拥有的行数。因此,如果数据库中有8个项目,则会发送8封电子邮件。每个都添加一个项目。所以第一封电子邮件有一个项目,第二封邮件有两个项目,依此类推。我试图找到一种简单的方法,使其在发送电子邮件之前获取所有信息,以便客户只收到一封电子邮件。逻辑方式是回显信息,但我不能用php变量做到这一点。我没有在下面的代码中包含查询和数据库连接。任何帮助都会被爱。
while ($row = mysql_fetch_array($query)) {
$Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p> </p>";
$to = "example@example.com";
$from = "example@example.com";
$subject = "Test";
$message = "$Items";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: example@example.com";
mail($to, $subject, $message, $headers);
}
答案 0 :(得分:1)
只需将发送功能移出周期:
while ($row = mysql_fetch_array($query)) {
$Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p> </p>";
}
if ($Items != '') {
$to = "example@example.com";
$from = "example@example.com";
$subject = "Test";
$message = "$Items";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: example@example.com";
mail($to, $subject, $message, $headers);
}
答案 1 :(得分:0)
当你遍历这些项目时,你应该只构建一条消息而不是整个电子邮件..如果不了解更多关于你的查询的话,很难做更多的事情。无论如何我会试一试:
$message = '';
while ($row = mysql_fetch_array($query)) {
$Items = $row['Items']. " - Aisle " .$row['Loc']. "<p> </p>";
$message .= "$Items";
}
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: example@example.com";
mail($to, $subject, $message, $headers);
注意:我不会按原样实现此代码。它旨在作为如何构建代码的示例。
答案 2 :(得分:0)
您的concatenation
错误,您应首先在循环外声明您的变量为空
$Items = '';
然后启动loop
并获取连接变量所需的所有数据
while ($row = mysql_fetch_array($query))
{
$Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p> </p>";
}
现在您已准备好发送电子邮件outside your loop
,或者您最终会收到每封电子邮件的一封电子邮件。所以你的代码看起来像这样
$Items = '';
while ($row = mysql_fetch_array($query))
{
$Items .= $row['Items']. " - Aisle " .$row['Loc']. "<p> </p>";
}
$from = "example@example.com";
$subject = "Test";
$message = "$Items";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";
$headers .= "From: example@example.com";
mail($to, $subject, $message, $headers);