php - 当 SQL 值为 True 时发送邮件

标签 php mysql email

因此,由于这个问题,我已经呆了一天多了。我有一个 PHP,其中 Cron 按设定的数量调用它。它被调用并执行得很好,除了样式之外没有太多问题。它的作用是在设定的时间查询数据库中的值,如果为真,则将其通过电子邮件发送到我在脚本中放入的指定电子邮件。它正在完成它的工作,但问题是电子邮件发送时的格式。当我打开电子邮件时,它看起来像这样:

Email format image

正如您所看到的,问题在于表格中只有第一行或第一行被格式化,其余结果不遵循它。

这是我正在使用的当前脚本,其中包含一些省略/更改的细节。

#!/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/

相关文章:

php - ussd的设计模式建议

php - 按表名 desc 分组不起作用

java - =?gb2312编码问题及建议

php - 在 SESSION 中存储信用卡号 - 解决方法?

PHP 事务不回滚

java - 需要 SOLR 和 PHP 帮助

php - 从 4 个相同的 Web 服务器中的 1 个运行 Cron 作业,所有这些服务器都具有相同的作业

iOS 如何在按下发送按钮时重置文本字段

ruby-on-rails - SendGrid 修改电子邮件中的链接,它们不会重定向到正确的页面

PhpStorm 2016.2 查找和替换多行文本