【问题标题】:PHP/HTML Code Renders as Text in Email: Any Insight?PHP/HTML 代码在电子邮件中呈现为文本:有什么见解吗?
【发布时间】:2013-06-08 19:47:33
【问题描述】:

我尝试了许多标题更改都无济于事。

可能是电子邮件服务器吗?还是我错过了一些重要的东西?

我希望看到的不仅仅是在生成的电子邮件中呈现为文本的代码。

谢谢!

<?php session_start(); ?>

<?php
$body = '';
$body .= '<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Shopping Cart</title>
</head>
<body>
<h1>Here is a Copy of Your Order</h1>'; 
    $body .= '<table>
    <tr>
    <th>Product</th>
    <th>Cost</th>
    <th>Units</th>
    <th>Subtotal</th>
    </tr>';
    $total = 0;

    foreach($_SESSION['cart'] as $item) {

    $body .= "<tr>
        <td>{$item['item']}</td>
        <td>\${$item['unitprice']}</td>
        <td>{$item['quantity']}</td>
        <td>$".($item['unitprice'] * $item['quantity'])."</td>
        </tr>";
        $total += ($item['unitprice'] * $item['quantity']);
    }
    $body .= '</table>';
    $body .= "<p>Grand total: \$$total</p>";
    $body .='</body></html>';
}
?> 

<?php
echo $body;
$to      =  'xxxx@gmail.com';
$subject =  'Fill This Order';
$headers =  'From: xxxx@gmail.com' . PHP_EOL;
$headers .= 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL;
mail($to, $subject, $message, $body, $headers);
?>

【问题讨论】:

  • 邮件客户端可以接收HTML邮件吗?你试过imap_mail()吗?您尝试过哪些标头?
  • 您好 cmt,我认为这可能是电子邮件客户端问题。我会尝试 imap_mail() 并报告。
  • 出于好奇,您为什么不使用可用于为您发送电子邮件的 mirad 库之一?

标签: php html email


【解决方案1】:

这里有一个关于如何发送带有 html 代码的邮件的教程:Sending Nice HTML Email with PHP

解决它,他们得到的工作。

您可以在那里轻松看到,发送的标头是:

$to = 'bob@example.com';

$subject = 'Website Change Reqest';

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: susan@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

您可以看到它们的差异主要是:\r\n 在行的每一端。 这可能是你的问题,因为没有它可能是这样的:

$headers .= 'MIME-Version: 1.0' . PHP_EOL . 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL;

在标题中...这可能是:'MIME-Version: 1.0Content-type: text/html; charset=iso-8859-1 并且不工作..

我认为您应该查看我添加的链接并通过它修改您的代码。

编辑:

我想我找到了!你发了mail($to, $subject, $message, $body, $headers);

而 PHP 邮件功能使用:

mail(to,subject,message,headers,parameters)

您可以在这里查看如何使用邮件功能:The PHP mail() Function

我认为 heppend 是您发送的 $message 不存在,并且标头未按应有的方式发送。

【讨论】:

  • 试过了,没用。它仍然以文本形式出现。我想这可能是一个电子邮件服务器的事情。感谢您的建议。
  • 我犯了这样一个菜鸟错误。非常感谢您的宝贵时间。 :)
  • 当然!我很高兴能帮上忙 :) 别担心,每个人都会偶尔犯愚蠢的错误。
【解决方案2】:

您是否尝试将 PHP_EOL 换成“\r\n”?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-03
    • 2011-10-29
    • 2023-03-09
    • 1970-01-01
    • 2015-07-21
    • 2021-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多