HTML 通过 PHP mail() 函数发送的邮件未正确显示
HTML sent via PHP mail() function not showing correctly in mail
我在 PHP
中设置了一个非常简单的 mail()
函数:
$to = $_POST['address_to_send'];
$subject = "New Message";
$message = $_POST['content_to_send'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: me@example.com" . "\r\n";
echo $message;
mail($to,$subject,$message,$headers);
echo
完全按照我想要的方式显示我可爱的格式化 HTML
,它按预期将电子邮件发送到正确的地址,主题正确,发件人地址正确。
然而,邮件的实际内容是空白。
内容是使用 PHP
生成的,但认为这不会有什么不同,因为 echo
只显示格式正确的 HTML。
编辑
经过测试,echo
只能在本地 WAMP 上运行,不能在我的服务器上运行。
尝试使用 var_dump()
来尝试弄清楚发生了什么,虽然在 WAMP 中它给了我我的字符串,但当它在服务器上运行时它是空的。
所以我认为这与我启动邮件功能的方式有关。
我有一个这样的表格(在 PHP
中生成):
<form action='purchase_orders.php?id=$order_id' method='POST'>
<button onclick='send_po($i)'>Send to $email</button><br />
<input type='hidden' id='po_content_to_send' name='po_content_to_send'>
<input type='hidden' id='po_address_to_send' name='po_address_to_send' value='$email'>
</form>
这会在 JS
中触发以下函数:
function send_po(po){
var po_to_send = document.getElementById('purchase_order_'+po).innerHTML;
document.getElementById('po_content_to_send').value = po_to_send;
this.form.submit();
}
这会在提交应触发此 PHP
的表单之前将相关 DIV 的内容添加到隐藏输入中:
if(isset($_POST['po_content_to_send']) && isset($_POST['po_address_to_send'])){
$to = $_POST['po_address_to_send'];
$subject = "New Purchase Order";
$message = $_POST['po_content_to_send'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: me@example.com" . "\r\n";
var_dump($message);
//mail($to,$subject,$message,$headers);
}
我需要 return false;
在我的按钮上,它正在提交,然后才能由 JS
填充值。
我在 PHP
中设置了一个非常简单的 mail()
函数:
$to = $_POST['address_to_send'];
$subject = "New Message";
$message = $_POST['content_to_send'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: me@example.com" . "\r\n";
echo $message;
mail($to,$subject,$message,$headers);
echo
完全按照我想要的方式显示我可爱的格式化 HTML
,它按预期将电子邮件发送到正确的地址,主题正确,发件人地址正确。
然而,邮件的实际内容是空白。
内容是使用 PHP
生成的,但认为这不会有什么不同,因为 echo
只显示格式正确的 HTML。
编辑
经过测试,echo
只能在本地 WAMP 上运行,不能在我的服务器上运行。
尝试使用 var_dump()
来尝试弄清楚发生了什么,虽然在 WAMP 中它给了我我的字符串,但当它在服务器上运行时它是空的。
所以我认为这与我启动邮件功能的方式有关。
我有一个这样的表格(在 PHP
中生成):
<form action='purchase_orders.php?id=$order_id' method='POST'>
<button onclick='send_po($i)'>Send to $email</button><br />
<input type='hidden' id='po_content_to_send' name='po_content_to_send'>
<input type='hidden' id='po_address_to_send' name='po_address_to_send' value='$email'>
</form>
这会在 JS
中触发以下函数:
function send_po(po){
var po_to_send = document.getElementById('purchase_order_'+po).innerHTML;
document.getElementById('po_content_to_send').value = po_to_send;
this.form.submit();
}
这会在提交应触发此 PHP
的表单之前将相关 DIV 的内容添加到隐藏输入中:
if(isset($_POST['po_content_to_send']) && isset($_POST['po_address_to_send'])){
$to = $_POST['po_address_to_send'];
$subject = "New Purchase Order";
$message = $_POST['po_content_to_send'];
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: me@example.com" . "\r\n";
var_dump($message);
//mail($to,$subject,$message,$headers);
}
我需要 return false;
在我的按钮上,它正在提交,然后才能由 JS
填充值。