【问题标题】:create a foreach table in html email template php在 html 电子邮件模板 php 中创建一个 foreach 表
【发布时间】:2017-07-08 16:49:46
【问题描述】:

我有一个电子邮件模板正在尝试在用户订购某些商品后发送给他们。使用内联 css 和 html 作为电子邮件模板发送电子邮件,并将其保存为 .html。问题是我如何将用户购买的所有项目加载到每个表中,并在发送之前将其传递给电子邮件 html 模板文件

<tbody style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;">
    {{ item }}
</tbody>

这是我发送邮件的 php

$mail = new PHPMailer;

$mail->From = "email@email.com";
$mail->FromName = "test";
$mail->addAddress($email); //Recipient name is optional
$mail->addReplyTo("email@email.com", "Reply");
$mail->isHTML(true);
$variables = array();
$variables['name'] = 'john';
$template = file_get_contents("eorder.html");
foreach($data as $row){
$eprodname = $this->get_name_from_id('product_name','product','product_id',$row['id']);
$variables['item'] ='<tr style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;page-break-inside: avoid;">
<td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">1</td>
<td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $eprodname .'</td>
 <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $row['quantity'] .'</td>
 <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $row['price'] .'</td>
</tr>';

}
foreach($variables as $key => $value)
{
  $template = str_replace('{{ '.$key.' }}', $value, $template);
}
$mail->Subject = "Order Details";
$mail->Body = $template;
$mail->Send();

我的问题:我对这段代码的看法是,如果用户订购了多个产品,这段代码只会加载桌子上的最后一个产品

【问题讨论】:

    标签: php html css email


    【解决方案1】:

    您正在覆盖您的 $variables['item'] 密钥。您需要将其更改为数组

    foreach($data as $row){
    $eprodname = $this->get_name_from_id('product_name','product','product_id',$row['id']);
    $variables['item'][] ='<tr style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;page-break-inside: avoid;">
    <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">1</td>
    <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $eprodname .'</td>
     <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $row['quantity'] .'</td>
     <td style="-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;margin: 0;font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 14px;vertical-align: top;padding: 8px;line-height: 1.428571429;border-top: 1px solid #ddd;background-color: #fff!important;">'. $row['price'] .'</td>
    </tr>';
    
    }
    

    【讨论】:

    • 它输出 Array 作为值而不是数组项购买 Array
    【解决方案2】:

    您正在用$value 替换{{ item }}!它是一个“钥匙”,你想用你的阵列替换它! 您应该合并您的项目,然后一次替换为“项目”!

    【讨论】:

    • 您的模板中有 1 个{{ item }}!当您在数组上迭代并替换为{{ '.$key.' }} 时,它仅适用于第一项!和其他物品不能用任何东西代替!!
    猜你喜欢
    • 1970-01-01
    • 2010-12-16
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-13
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多