php - 将多行发送到一封电子邮件

标签 php mysql pdo

拜托,我有一个向客户发送电子邮件的脚本。该脚本的问题是它发送多封邮件,但我想要的只是它发送一封包含多行详细信息的邮件。即所有账单详细信息都应在表格中。

下面是我的脚本

谢谢

$bill_status = "OVERDUE";
$st = $pdo->prepare("SELECT *, DATEDIFF(NOW(), due_date) AS days_diff 
FROM bills LEFT JOIN login_details ON bills.user_id = login_details.user_id
WHERE bills.bill_status = '$bill_status'");
$st->execute();
$row_sent = $st->rowCount();

$mail = new PHPMailer;

//$mail->SMTPDebug = 3;  // Enable verbose     debug output

$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'localhost';  // Specify main and backup SMTP servers
$mail->SMTPAuth = true;    // Enable SMTP authentication
$mail->Username = 'mails@mail.com';                 // SMTP username
$mail->Password = 'pasword';                 // SMTP password
$mail->SMTPSecure = 'ssl'; 
$mail->Port = 465;                   // TCP port to connect to
$mail->From = 'no_reply@noreply.com';
$mail->FromName = 'Coy Name';

$mail->WordWrap = 587;        // Set word wrap to 50 characters
$mail->AddEmbeddedImage("../img/logo.png", "logo");
$mail->isHTML(true);      // Set email format to HTML
$mail->Subject = 'Notice';
while($rows = $st->fetch(PDO::FETCH_ASSOC)){
$username = $rows['username'];

$message= "
<div class='messages'>
<h3><img src='cid:my_logo'> </h3>
<br>
<div style='font-size:15px;'>Email Notification on Bill Due for Payment      </h4>
<p>Dear: Customer</p>
<p>
The following bills are due for payment:
</p>
<table width='80%' border='0' cellspacing='0' cellpadding='0'>
<tr style='font-weight:bold;'>
<td>Trans Ref</td>
            <td>Due Date</td>
            <td>Days Overdue</td>
            <td>Service Provider</td>
            <td>Service Type</td>
            <td>Amount Paid</td>
            <td>Bill Status</td>
            <td>Recurring</td>
  </tr>

 <h3>Yours<br>
Coy Name</h3>
";    

$message .= "        <tr>";
$message .= "            <td>".$rows['trans_ref']."</td>";
$message .= "            <td>".$rows['due_date']."</td>";
$message .= "            <td>".$rows['days_diff']."</td>";
$message .= "            <td>".$rows['service_provider']."</td>";
$message .= "            <td>".$rows['service_type']."</td>";
$message .= "            <td>".$rows['amount_paid']."</td>";
$message .= "            <td>".$rows['bill_status']."</td>";
$message .= "            <td>".$rows['recurring']."</td>";
$message .= "        </tr>";

$mail->addAddress($username);     // Add a recipient
$mail->Body    = $message;
$mail->send();
$mail->ClearAddresses();

}

最佳答案

while 循环只能围绕

$message .= "        <tr>";
....
$message .= "        </tr>";

声明。否则所有其他语句也会执行多次。

关于php - 将多行发送到一封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41953731/

相关文章:

php - 通过 IP 范围限制访问 (PHP)

php - 使用php将mysql表数据转换为字符串

php - Laravel 3 中的复杂 sql 语句

php - 将值插入数据库的问题

php - AJAX/PHP 将值发送到服务器

php 获取变量值并将其以动态方式附加到查询中

php - 使用 PHP/PYTHON/其他编程语言发挥 Visual SVG 的威力

Mysql 选择某种语言的字段

php - 附加未知数量的 WHERE 参数

php - 在库 api 中为每个任务或每个事务创建一个函数?