【问题标题】:Email not displaying HTML [closed]电子邮件不显示 HTML [关闭]
【发布时间】:2016-04-05 12:49:40
【问题描述】:

我想显示我在发送给客户和管理员的电子邮件中编写的 HTML。现在它只是显示所有的html标签。

我有这个代码:

<?php 
if(isset($_POST['submit'])){
        $to = "myemail@myemail.com";
        $from       = $_POST['email_address'];
        $first_name = $_POST['first_name'];
        $last_name  = $_POST['last_name'];
        $address_street = $_POST['address_street'];
        $phone      = $_POST['mobile_no'];
        $customer_message = $_POST['textarea'];

        $subject  = "Spejl Blank - Klik en pris";

        $message  = "<html><body>";
        $message .= "<h1HELLO WORLD!</h1>";
        $message .= "</body></html>";
        $message .= "Du modtager her dit uforpligtende tilbud :)";
        $message .= "Din besked: " . $customer_message;

        $headers  = "From:" . $from;
        $headers2 = "From:" . $to;
        $headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
        $headers  = "MIME-Version: 1.0" . "\r\n";
        $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";

        mail($to,$subject,$message,$message1,$headers);
        mail($from,$subject,$message,$message1,$headers2);

    }
?>

【问题讨论】:

  • 您的 HTML $message .= "&lt;h1HELLO WORLD!&lt;/h1&gt;";也有错字
  • ^ 是的,可以的。
  • 我不小心删除了我对 $headers = "MIME-Version: 1.0" . "\r\n"; 中的错字的评论 - 你破坏了“链环”;-)
  • 你也没有$message1 并且在标题中使用了5个参数。
  • @RasmusGlenvig 你不能一直用我给你的代码覆盖你原来的帖子。我已经回滚到你原来的问题。

标签: php html email


【解决方案1】:

这是根据您的原始帖子https://stackoverflow.com/revisions/36426850/1

这是交易。您的代码缺少 &gt; 对应的 &lt;h1HELLO WORLD!&lt;/h1&gt;,因此需要将其更改为 &lt;h1&gt;HELLO WORLD!&lt;/h1&gt;

编辑:啊,现在你在https://stackoverflow.com/revisions/36426850/2 中编辑了它,但以下内容仍然适用。

然后“链环”在$headers = "MIME-Version: 1.0" . "\r\n"; 中中断,其中缺少点/连接。

$headers .= "MIME-Version: 1.0" . "\r\n";

然后你在标题中使用了 5 个参数,这些参数不起作用。 mail() 有第五名,但那是完全不同的。

阅读它的手册:

除此之外,您还没有分配给 $message1 的任何东西,但无论如何这将毫无用处。


error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误应该只在暂存阶段完成,而不是在生产阶段。


编辑:

另一件事是您需要创建新的标头才能让其他邮件以 HTML 格式发送,这很可能是您说它不是以 HTML 格式发送的原因。

只有发送的第一封邮件是 HTML 而不是第二封邮件。请参阅我在 Stack 上的答案之一以执行此操作 https://stackoverflow.com/a/18382062/ 并为每个标头添加新的 HTML 标头,就像您为 $headers2 所做的那样为每个标头使用不同的变量,并使用与您使用相同的方式将其应用于您的代码$headers 的 HTML。

【讨论】:

  • 感谢您的回答!我刚刚尝试了您的更改,但仍然无法正常工作。我已删除 $message1 并在 "=" 之前添加了点
  • @RasmusGlenvig 不客气。根据我在回答中给你的链接阅读mail() 上的手册,然后按“T”。
  • 我会的,非常感谢!
  • @RasmusGlenvig 我注意到的另一件事是您需要在$message .= "Din besked: " . $customer_message; 之后移动$message .= "&lt;/body&gt;&lt;/html&gt;";
  • @RasmusGlenvig 另一件事是您需要创建新标头才能将其他邮件以 HTML 格式发送,这很可能就是您说它不以 HTML 格式发送的原因。只有发送的第一封邮件是 HTML 而不是第二封邮件。请参阅我在 Stack 上的答案之一以执行此操作stackoverflow.com/a/18382062
猜你喜欢
  • 2018-04-22
  • 2013-02-23
  • 2016-04-25
  • 1970-01-01
  • 2011-09-10
  • 2016-01-08
  • 2020-04-11
  • 2014-07-10
  • 2011-04-10
相关资源
最近更新 更多