因此,由于这个问题,我已经呆了一天多了。我有一个 PHP,其中 Cron 按设定的数量调用它。它被调用并执行得很好,除了样式之外没有太多问题。它的作用是在设定的时间查询数据库中的值,如果为真,则将其通过电子邮件发送到我在脚本中放入的指定电子邮件。它正在完成它的工作,但问题是电子邮件发送时的格式。当我打开电子邮件时,它看起来像这样:
正如您所看到的,问题在于表格中只有第一行或第一行被格式化,其余结果不遵循它。
这是我正在使用的当前脚本,其中包含一些省略/更改的细节。
#!/path/to/php
<?php
//DB
$dbconnect=new mysqli('localhost', 'user', 'pass', 'db');
$result=$dbconnect->query("SELECT `uid`,`pid`,`pdesc`,`umail`,`name` FROM `db_table` WHERE `pid`<='6'");
//if there are any records matching this query send an email listing each one using 'uid' as the identifier
if($result->num_rows>=1) {
$to = 'test@test.com';
$subject = "TEST FOR PRIZES NOTIFICATION";
$headers = 'From: sender@test.com' . "\r\n" .
$headers = "MIME-Version: 1.0" . "\r\n" .
$headers = "Content-type:text/html;charset=iso-8859-1" . "\r\n" .
'Reply-To: rep@test.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$message = '<html><body>';
$message .= 'THIS IS A TEST!';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= '<tr>
<td>User ID</td>
<td>Display Name</td>
<td>Email</td>
<td>Price</td>
<td>Price Description</td></tr>';
while($row=$result->fetch_assoc()) {
$message .= "<tr><td>".$row['uid']."</td>";
$message .= "<td>".$row['name']."</td>";
$message .= "<td>".$row['umail']."</td>";
$message .= "<td>".$row['pid']."</td>";
$message .= "<td>".$row['pdesc']."</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
}
if(mail($to, $subject, $message, $headers)) {
//mail successfully sent
} else {
//mail unsuccessful
}
}
?>
感谢您的宝贵时间!
最佳答案
您正在循环内关闭表格,因此它在第一个条目后关闭。从此更改您的代码:
while($row=$result->fetch_assoc()) {
$message .= "<tr><td>".$row['uid']."</td>";
$message .= "<td>".$row['name']."</td>";
$message .= "<td>".$row['umail']."</td>";
$message .= "<td>".$row['pid']."</td>";
$message .= "<td>".$row['pdesc']."</td></tr>";
$message .= "</table>";
$message .= "</body></html>";
}
对此:
while($row=$result->fetch_assoc()) {
$message .= "<tr><td>".$row['uid']."</td>";
$message .= "<td>".$row['name']."</td>";
$message .= "<td>".$row['umail']."</td>";
$message .= "<td>".$row['pid']."</td>";
$message .= "<td>".$row['pdesc']."</td></tr>";
}
$message .= "</table>";
$message .= "</body></html>";
最后关闭表格。
关于php - 当 SQL 值为 True 时发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41693031/