通过 PHPmailer 发送 HTML 表格 [英] Send HTML table through PHPmailer

查看:48
本文介绍了通过 PHPmailer 发送 HTML 表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 PHPmailer 发送动态 HTML 表,但我不知道如何,是否可以获取所有表的变量​​?或类似的东西?

这是我的代码:

require("inc/class.phpmailer.php");$mail = new PHPMailer();$mail->CharSet = 'UTF-8';$mail->From = ('compras.co@kantarworldpanel.com');$mail->FromName = ('Compras CO (KWBTA)');$mail->AddAddress($_POST['providermail']);$mail->AddCC("camilo.uribe@kantarworldpanel.com.co");$mail->IsHTML(true);//如果提交,发送邮件if (isset ($_POST['send_approve'])) {$mail->Subject = "Kantar Worldpanel - Solicitud de Cotización";$contenido = 'Kantar Worldpanel Perú S.A. Sucursal Colombia desea slicar a ustedes la cotizaciónrespondiente a los siguientes Items:<br>';////////////////////////////////////////////$contenido .= '表格应该在这里;///////////////////////////////////////////$mail->Body = $contenido;$mail->Send();标头(位置:RequestsPA.php");}

这是表格代码:

0){echo "</br></br>";echo "

";echo "\t\n";echo "";echo "<th>项目</th><th>Cantidad</th><th>CECO</th><对关怀的描述</th><th>Usuario 决赛</th></tr>\n";echo "</thead>";echo "";$r=0;while($row = mysql_fetch_assoc($query)){echo "\t\t<td>".htmlentities($row['item_id'])."</td><td>".htmlentities($row['item_Cant'])."</td><td>".htmlentities($row['CECO_cod'])."</td><td>".$row['item_desc']."</td><td>".$row['item_enduser']."</td></tr>\n";if($r%2==0)++$r;else--$r;}echo "</tbody>";echo "\t
\n";}echo "</div>";?>

希望你能理解我,谢谢你的帮助.

解决方案

虽然您可以使用 echo 输出您的表格并使用 输出缓冲,但通常将消息体组装成字符串更容易,如下所示:

$contenido = '';if($aux['total']>0){$contenido .= "</br></br>";$contenido .="

";$contenido .= "\t\n";$contenido .= "";...

然后使用该字符串作为您的消息正文.如果您使用相同的代码生成与电子邮件内容相同的网页输出,则将该脚本转换为您可以从任何地方调用的函数.

I'm trying to send a dynamic HTML table with PHPmailer but i don't know how, is posible get a variable with all table? or something like that ?

Here is my code:

require("inc/class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->From     = ('compras.co@kantarworldpanel.com');
$mail->FromName = ('Compras CO (KWBTA)');
$mail->AddAddress($_POST['providermail']);
$mail->AddCC("camilo.uribe@kantarworldpanel.com.co");    
$mail->IsHTML(true);        


 //IF SUBMIT, SEND MAIL 
 if (isset ($_POST['send_approve'])) {
$mail->Subject = "Kantar Worldpanel - Solicitud de Cotización";
$contenido =  'Kantar Worldpanel  Perú S.A. Sucursal Colombia desea solicitar a ustedes la cotización correspondiente a los siguientes Items:<br>';

////////////////////////////////////////////
$contenido .= ' The Table should be here;
///////////////////////////////////////////

$mail->Body    = $contenido;
$mail->Send();
header ("Location: RequestsPA.php");
}

And here is the table code:

<?php 
$sqlStr = "SELECT items.CA_id, items.item_id, items.item_Cant, items.CECO_cod, items.item_desc, items.item_enduser
FROM items where CA_id = ".$CA_id;
$sqlStrAux = "SELECT count(*) as total FROM items";

$aux = Mysql_Fetch_Assoc(mysql_query($sqlStrAux));
$query = mysql_query($sqlStr);  

if($aux['total']>0){

    echo "</br></br>";
    echo "<div class='datagrid'>";
    echo "\t<table class=\"tablesorter\">\n";
    echo "<thead>";
    echo "<tr>
        <th>Item</th>
        <th>Cantidad</th>
        <th>CECO</th>
        <th>Descripción de solicitud</th>
        <th>Usuario final</th>          
      </tr>\n";
    echo "</thead>";      
        echo "<tbody>";
        $r=0;
        while($row = mysql_fetch_assoc($query)){
    echo "\t\t<tr class=\"row$r\">
            <td>".htmlentities($row['item_id'])."</td>
            <td>".htmlentities($row['item_Cant'])."</td>
            <td>".htmlentities($row['CECO_cod'])."</td>
            <td>".$row['item_desc']."</td>
            <td>".$row['item_enduser']."</td>
                </tr>\n";
      if($r%2==0)++$r;else--$r;
    }
    echo "</tbody>";                  
    echo "\t</table>\n";
    }
    echo "</div>";
?>

I hope you can understand me, thanks for your help.

解决方案

While you can use echo to output your table and capture it with output buffering, but generally it's easier to assemble the message body in a string, like this:

$contenido = '';
if($aux['total']>0){

    $contenido .= "</br></br>";
    $contenido .= "<div class='datagrid'>";
    $contenido .= "\t<table class=\"tablesorter\">\n";
    $contenido .= "<thead>";
    ...

Then just use that string as your message body. If you use the same code to generate web page output as your email content then turn that script into a function you can call from either place.

这篇关于通过 PHPmailer 发送 HTML 表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆