为什么PHP格式的PHP联系表格发送的电子邮件不是格式化的?

时间:2016-04-24 04:11:51

标签: php html forms html-email contact-form

我正在尝试制作自己的自定义联系表单。在对其进行测试以进行改进时,我发现这些电子邮件不是HTML格式的。我不确定为什么会这样,但我发现我一定做错了,因为我的电子邮件服务提供商从其他来源收到HTML格式的电子邮件。我认为消息体变量中的HTML代码也是正确的,所以它必须是与headers变量或我设置它的方式相关的东西。

编辑:与有人建议的不同,使用样式标签不是我的问题,因为我没有使用Gmail(不接受它们),而是Outlook(确实接受它们)。

if ($_POST['Submit']) {
   if (empty($_POST['Phone'])) {
      $content = "<html>
          <head></head>
          <body>
            <div class='boldtext'>From:</div>
            $name
            <br/>
            <div class='boldtext'>E-mail:</div>
            $email
            <br/><br/>
            $message
           <style>
             .boldtext {
                font-weight: bold;
          }
          </style>
          </body>
        </html>";
   }

上面是表单操作的PHP代码的一部分。剩下的部分是对每个输入和回声的一些正则表达式验证作为对它们的响应。提交的内容将发送到Outlook电子邮件地址,我知道该地址与头部或正文中的样式标记兼容。我做错了什么?

客户字面上收到的电子邮件样本:

<html>
<head></head>
<body>
  <div class='boldtext'>From:</div>
  John Doe
  <br/>
  <div class='boldtext'>E-mail:</div>
  email@email.com
  <br/><br/>
  This is a message.
<style>
.boldtext {
font-weight: bold;
}
</style>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

我发现发送的电子邮件不是HTML格式的原因。它不是HTML或CSS相关的,错误发生在mail();功能:

参数$来自干扰$ header并且不允许HTML格式工作。

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

邮件($ to,$ subject,$ message,$ headers);

现在一切正常,CSS结构取决于电子邮件客户端的兼容性。

答案 1 :(得分:0)

据我所知,您不能像您提供的那样在电子邮件中添加样式,但您只能在电子邮件中添加样式才能添加样式。做类似这个示例代码的事情,

<div style="font-weight:bold;">From:</div>
$name
<br/>
<div style="font-weight:bold;">E-mail:</div>
$email
<br/><br/>
<p style="font-weight:100;">$message</p>

编辑:你的代码就是这个;

 if ($_POST['Submit']) {
   if (empty($_POST['Phone'])) {
      $content = "<html>
          <head></head>
          <body>
            <div class='boldtext'>From:</div>
            $name
            <br/>
            <div class='boldtext'>E-mail:</div>
            $email
            <br/><br/>
            $message
           <style>
             .boldtext {
                font-weight: bold;
          }
          </style>
          </body>
        </html>";
   }
}

你需要这样做,

 if ($_POST['Submit']) {
   if (empty($_POST['Phone'])) {
      $content = '<html>
          <head></head>
          <body>
            <div style="font-weight:bold;">From:</div>
            '.$name.'
            <br/>
            <div style="font-weight:bold;">E-mail:</div>
            '.$email.'
            <br/><br/>
            <p style="font-weight:100;">'.$message.'</p>
          </body>
        </html>';
   }
}