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 填充值。