我已经建立了一个在线订单,并将表单输出通过电子邮件发送到我妻子的收件箱。然而,目前所有的价值观都是以列表的形式出现的,这对她来说很难遵循。
以下是我们的网上订单:
Name: Address: Phone: Email: Book Number: Page Number1: Product Number1: Product1: QTY1: Unit Price1: Total Price1: Page Number2: Product Number2: Product2: QTY2: Unit Price2: Total Price2: Page Number3: Product Number3: Product3: QTY3: Unit Price3: Total Price3:
我想将电子邮件的格式设置为与网站上的输入表单相似。我一直在尝试对别人的例子进行逆向工程,但没有成功。我会附上表格的快照,但我的声誉还不够高。本质上,它是一个包含与我需要收集的数据相对应的表单字段的表(想想订单表单)。以下是提交给的PHP代码示例
<?php
$from = $_REQUEST['Email'] ;
$to = "myemailaddress@gmail.com";
$name = $_REQUEST['Name'] ;
$headers = "From: $from";
$subject = "Online Order Submission";
$fields = array();
$fields{"Name"} = "Name";
$fields{"Address"} = "Address";
$fields{"Phone"} = "Phone";
$fields{"Email"} = "Email";
$fields{"Item1Page"} = "Page Number1";
$fields{"Number1"} = "Product Number1";
$fields{"Product1"} = "Product1";
$fields{"QTY1"} = "QTY1";
$fields{"Uprice1"} = "Unit Price1";
$fields{"Tprice1"} = "Total Price1";
$fields{"Item2Page"} = "Page Number2";
$fields{"Number2"} = "Product Number2";
$fields{"Product2"} = "Product2";
$fields{"QTY2"} = "QTY2";
$fields{"Uprice2"} = "Unit Price2";
$fields{"Tprice2"} = "Total Price2";
// Variables removed for clarity
$fields{"Item11Page"} = "Page Number11";
$fields{"Number11"} = "Product Number11";
$fields{"Product11"} = "Product11";
$fields{"QTY11"} = "QTY11";
$fields{"Uprice11"} = "Unit Price11";
$fields{"Tprice11"} = "Total Price11";
$body = "The following is an order from our Web Order Form:'n'n"; foreach($fields as $a => $b){
$body .= sprintf("%20s: %s'n",$b,$_REQUEST[$a]); }
$headers2 = "From: myemailaddress@gmail.com";
$subject2 = "Thank you for your order";
$autoreply = "Thank you for your order. We will contact you when your order is ready for delivery.";
if($from == '') {print "You have not entered an email, please go back and try again";}
else {
if($name == '') {print "You have not entered a name, please go back and try again";}
else {
$send = mail($to, $subject, $body, $headers);
$send2 = mail($from, $subject2, $autoreply, $headers2);
if($send)
{header( "Location: http://www.website.com/thankyou.html" );}
else
{print "We encountered an error sending your mail, please try again later."; }
}
}
?>
如有任何帮助,将不胜感激
更新
我已经尝试了下面提到的一些参考文献和修正案。当前编辑如下:
<?php
$from = $_REQUEST['Email'] ;
$to = "myemailaddress@live.com";
$Name = $_REQUEST['Name'] ;
$headers = "From: $from";
$headers .= "Content-type: text/html'r'n";
$subject = "Order Submission TEST";
$message = "<html><body><br><br>The following is an order from our TEST Order Form<br><br><br>";
$message .= "<table>";
$message .= "<tr><td>Name: </td><td>" . strip_tags($_POST['Name']) . "</td></tr>";
$message .= "<tr><td>Address: </td><td>" . strip_tags($_POST['Address']) . "</td></tr>";
$message .= "<tr><td>Phone No: </td><td>" . strip_tags($_POST['Phone']) . "</td></tr>";
$message .= "<tr><td>E-mail: </td><td>" . strip_tags($_POST['Email']) . "</td></tr>";
$message .= "</table>";
$message .= "<table border=1><tr><td>Page No.</td><td>Product No.</td><td>Product Name</td><td>QTY</td><td>Unit Price</td><td>Total Price</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item1Page']) . "</td><td>" . strip_tags($_POST['Number1']) . "</td><td>" . strip_tags($_POST['Product1']) . "</td><td>" . strip_tags($_POST['QTY1']) . "</td><td>" . strip_tags($_POST['Uprice1']) . "</td><td>" . strip_tags($_POST['Tprice1']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item2Page']) . "</td><td>" . strip_tags($_POST['Number2']) . "</td><td>" . strip_tags($_POST['Product2']) . "</td><td>" . strip_tags($_POST['QTY2']) . "</td><td>" . strip_tags($_POST['Uprice2']) . "</td><td>" . strip_tags($_POST['Tprice2']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item3Page']) . "</td><td>" . strip_tags($_POST['Number3']) . "</td><td>" . strip_tags($_POST['Product3']) . "</td><td>" . strip_tags($_POST['QTY3']) . "</td><td>" . strip_tags($_POST['Uprice3']) . "</td><td>" . strip_tags($_POST['Tprice3']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item4Page']) . "</td><td>" . strip_tags($_POST['Number4']) . "</td><td>" . strip_tags($_POST['Product4']) . "</td><td>" . strip_tags($_POST['QTY4']) . "</td><td>" . strip_tags($_POST['Uprice4']) . "</td><td>" . strip_tags($_POST['Tprice4']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item5Page']) . "</td><td>" . strip_tags($_POST['Number5']) . "</td><td>" . strip_tags($_POST['Product5']) . "</td><td>" . strip_tags($_POST['QTY5']) . "</td><td>" . strip_tags($_POST['Uprice5']) . "</td><td>" . strip_tags($_POST['Tprice5']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item6Page']) . "</td><td>" . strip_tags($_POST['Number6']) . "</td><td>" . strip_tags($_POST['Product6']) . "</td><td>" . strip_tags($_POST['QTY6']) . "</td><td>" . strip_tags($_POST['Uprice6']) . "</td><td>" . strip_tags($_POST['Tprice6']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item7Page']) . "</td><td>" . strip_tags($_POST['Number7']) . "</td><td>" . strip_tags($_POST['Product7']) . "</td><td>" . strip_tags($_POST['QTY7']) . "</td><td>" . strip_tags($_POST['Uprice7']) . "</td><td>" . strip_tags($_POST['Tprice7']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item8Page']) . "</td><td>" . strip_tags($_POST['Number8']) . "</td><td>" . strip_tags($_POST['Product8']) . "</td><td>" . strip_tags($_POST['QTY8']) . "</td><td>" . strip_tags($_POST['Uprice8']) . "</td><td>" . strip_tags($_POST['Tprice8']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item9Page']) . "</td><td>" . strip_tags($_POST['Number9']) . "</td><td>" . strip_tags($_POST['Product9']) . "</td><td>" . strip_tags($_POST['QTY9']) . "</td><td>" . strip_tags($_POST['Uprice9']) . "</td><td>" . strip_tags($_POST['Tprice9']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item10Page']) . "</td><td>" . strip_tags($_POST['Number10']) . "</td><td>" . strip_tags($_POST['Product10']) . "</td><td>" . strip_tags($_POST['QTY10']) . "</td><td>" . strip_tags($_POST['Uprice10']) . "</td><td>" . strip_tags($_POST['Tprice10']) . "</td></tr>";
$message .= "<tr><td>" . strip_tags($_POST['Item11Page']) . "</td><td>" . strip_tags($_POST['Number11']) . "</td><td>" . strip_tags($_POST['Product11']) . "</td><td>" . strip_tags($_POST['QTY11']) . "</td><td>" . strip_tags($_POST['Uprice11']) . "</td><td>" . strip_tags($_POST['Tprice11']) . "</td></tr>";
$message .= "<tr><td colspan=5 align=right>Order Processing Charge </td><td align=right>$2.50</td></tr>";
$message .= "<tr><td colspan=5 align=right>Order TOTAL </td><td align=right></td></tr>";
$message .= "</table></body></html>";
$headers2 = "From: myemailaddress@live.com ";
$subject2 = "Thank you for your order ";
$autoreply = "Thank you for your order. We will contact you when your order is ready for delivery. ";
$send = mail($to,$subject,$message,$headers);
$send2 = mail($from,$subject2,$autoreply,$headers2);
if($send)
{header( "Location: thankyou.html" );}
else
{print "We encountered an error sending your mail, please try again later."; }
?>
我借用了许多想法,这次化身删除了数组,转而将变量直接注入表中。$send2行运行良好,因为收到了"谢谢您的订单"电子邮件,重定向到thankyou.html也运行良好。但是,没有收到订单的电子邮件。
您可以在电子邮件中放置HTML标记,前提是其中包含一些标题。这可以让您在电子邮件中放入表单。请参阅此处
您需要用HTML标记您的电子邮件正文。
由于这是一封电子邮件,我建议您使用<table>
S来构建表单。
我看到您正在访问像$fields{"Name"}
这样的php数组。将其转换为$fields['name']
,就像您在顶部所做的那样。使用小写键名以提高可读性,使用'
而不是"
以提高性能。你可以在这里阅读更多关于这方面的信息。
关于结构,请参阅此示例(样式属性是内联样式的示例):
<html>
<body>
<table width="600" style="border:1px solid #333">
<tr>
<td align="center"><!-- head --></td>
</tr>
<Tr>
<td align="center">
<!-- email body -->
<table align="center" width="300" border="0" cellspacing="0" cellpadding="0" style="border:1px solid #ccc;">
<tr>
<td><!-- key --></td>
<td><!-- value --></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
注意:在电子邮件html中仅使用内联样式,因为大多数电子邮件阅读器无法正确解析外部css。在这里和这里阅读更多关于电子邮件和表格的信息。
对于发送电子邮件,我建议您开始使用SwiftMailer。这是一个PHP邮件类,它使用PHP发送邮件变得简单,并为附件等提供了方便的功能。要实现它,您需要一些高级知识,但文档会帮助您。
祝你好运!
如果需要正确对齐标签,那么在生成消息体时可以用PHP填充字符串。
循环浏览变量,并使用str_pad
函数:
<?php
foreach ($orderDetails as $key => $value) {
$body.= str_pad($key, 20) . ': ' . $value;
}
你仍然可以用纯文本发送电子邮件,而不必使用HTML。