iT邦幫忙

0

phpmail信件寄出的內容如何呈現表格樣式

目前收件者收到的內容是這樣呈現
商品編號 商品名稱 數量
$pr_id[$i] $pr_name[$i] $pr_num[$i]
希望讓收件者看到的表格類似
請問我在程式中的
##$message .= "商品編號 商品名稱 數量\n";

for($i=0;$i<$_POST["insert_num"];$i++){
if($pr_id[$i]!=""){
$message .= $pr_id[$i]."\t\t\t".$pr_name[$i]."\t\t\t".$pr_num[$i]."\n";
##這段要怎麼改

$to = $row_RecMail['receive'];
$message  = "姓名:\t".$name."\n";
$message .= "電子信箱:\t".$mailfrom."\n";
$message .= "公司名稱:\t".$company."\n";
$message .= "地址:\t".$adr."\n";
$message .= "連絡電話:\t".$tel."\n";
$message .= "傳真電話:\t".$fax."\n\n";
$message .= "商品編號     商品名稱     數量\n";

for($i=0;$i&lt;$_POST["insert_num"];$i++){
if($pr_id[$i]!=""){
$message .= $pr_id[$i]."\t\t\t".$pr_name[$i]."\t\t\t".$pr_num[$i]."\n";
}
}
$message .= "\n";
$message .= "留言內容:\t".$content."\n";
$headers .= 'From: ' .$mailfrom. "\r\n" .
'X-Mailer: PHP/' . phpversion();

敬請大大協助指導感謝!!

1 個回答

2
wiseguy
iT邦超人 1 級 ‧ 2012-08-11 18:15:46
最佳解答

你說的是要改成這樣嗎:

&lt;pre class="c" name="code">$message .= "&lt;table border=1 cellspacing=0 cellpadding=3 style=\"border-collapse: collapse\">&lt;tr>&lt;td>商品編號&lt;/td>&lt;td>商品名稱&lt;/td>&lt;td>數量&lt;/td>&lt;/tr>\n";
  
for($i=0;$i&lt;$_POST["insert_num"];$i++){
    if($pr_id[$i]!=""){
        $message .= '&lt;tr>&lt;td>' . $pr_id[$i] . '&lt;/td>&lt;td>' . $pr_name[$i] . '&lt;/td>&lt;td>' . $pr_num[$i] . "&lt;/td>&lt;/tr>\n";
    }
}
$message .= "&lt;/table>\n";

如果是的話,信件的 header 記得要加上 mime type:

&lt;pre class="c" name="code">$headers .= "Content-Type: text/html\r\n";

BTW, 程式不要寫醬子:

&lt;pre class="c" name="code">$i&lt;$_POST["insert_num"]

要不然惡意使用者送個 insert_num=9999999999999999999 你的網站就有被癱瘓的風險。可以改成

&lt;pre class="c" name="code">$i&lt;min($_POST["insert_num"],100) /* 最多一百筆 */

之類的,就比較 OK。

wiseguy iT邦超人 1 級 ‧ 2012-08-12 12:45:43 檢舉

抱歉,更正建議:
改成

&lt;pre class="c" name="code">$max = min($_POST["insert_num"],100);
for($i=0;$i&lt;$max;$i++) ...

比較好,以免 min() 每趟迴圈都執行一次。

netdoit iT邦新手 5 級 ‧ 2012-08-14 09:18:48 檢舉

感謝大大指導~已經解決了~謝謝您!!

我要發表回答

立即登入回答