PHP为什么我的html显示为文本?

时间:2013-08-15 08:33:14

标签: php html text

我正在学习php,并试图形成我邮寄到我的电子邮件。这是我的代码:     

  $to = "name@domain.com";
  $subject = "Competition Entry - WIN A 2 NIGHT FAMILY PRICE";
  $message = "Name: ".$name. "<br />" ."Surname: ".$surname.;
  mail ($to, $subject, $message);
  ?>

当它发送到我的电子邮件时,显示为:

Name:  <br /> Surname:

为什么我的<br />显示为文字而不是中断?

4 个答案:

答案 0 :(得分:3)

追加标题Content-Type

$headers .= "Content-Type: text/html; charset=UTF-8\r\n";

示例文档使用HTML格式发送邮件: http://css-tricks.com/sending-nice-html-email-with-php/

答案 1 :(得分:1)

因为默认情况下您的邮件正文是纯文本,而<br />是HTML标记。如果你想用HTML发送邮件,你需要正确地构建它(我建议你使用PHPMailer类来完成这项工作)。如果你想要换行。你需要使用\n

答案 2 :(得分:1)

您必须发送正确的标题,您需要使用html发送邮件:

 $header  = "MIME-Version: 1.0\r\n";
 $header .= "Content-type: text/html; charset: utf8\r\n";
 $to      = "name@domain.com";
 $subject = "Competition Entry - WIN A 2 NIGHT FAMILY PRICE";
 $message = "Name: ".$name. "<br />" ."Surname: ".$surname.;
 mail ($to, $subject, $message, $headers);

答案 3 :(得分:0)

开始使用Swiftmailer,您的生活会更轻松。

require_once('swift/lib/swift_required.php');
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
    ->setFrom(array($from))
    ->setTo(array($to))
    ->setEncoder(Swift_Encoding::get7BitEncoding())
    ->setSubject($subject)
    ->setBody($body, 'text/html')
    ->addPart(strip_tags($body), 'text/plain')
    ->attach(Swift_Attachment::fromPath($filename))
;
$mailer->send($message);