【问题标题】:Formatting HTML with PHP Mail使用 PHP 邮件格式化 HTML
【发布时间】:2013-07-18 13:35:31
【问题描述】:

我一直在这里处理这个线程: Sending HTML email from PHP

在过去的 5 个小时里,由于某种原因无法让我的 PHP 生成 HTML 邮件。

这是我所拥有的:

// Construct Mail:
$message = "<html><body>Some text<br />New line<p>New para</p></body></html>";
// Send Mail:
$to         = "$UserMail";
$subject        = "[Skills Exchange Network] Event Created";
$header     = 'MIME-Version: 1.0' . "\r\n";
$header     .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n";
$headers    .= 'From: Skills Exchange Network <Mail Address is here>' . "\r\n";
$headers    .= 'Cc: Skills Exchange Network <Mail Address is here>' . "\r\n";
$SendMail   = mail($to,$subject,$message,$headers);

这是我收到的:

来自技能交流网络 rnCc:技能交流网络 rn

我真的很茫然……

这是我现在拥有的:

// Construct Mail:
$message = "<html><body>Some text<br />New line<p>New para</p></body></html>";

// Send Mail:
$to         = "$UserMail";
$subject        = "[Skills Exchange Network] Event Created";

// To send HTML mail, the Content-type header must be set
$headers     = "MIME-Version: 1.0" . "\r\n";
$headers    .= "Content-Type: text/html; charset=ISO-8859-1" . "\r\n";

// Additional Headers:
$headers    .= "From: Skills Exchange Network <info@skillsexchangenetwork.net>" . "\r\n";
$headers    .= "Cc: Skills Exchange Network <info@skillsexchangenetwork.net>" . "\r\n";
$SendMail   = mail($to, $subject, $message, $headers);

这是我收到的:

Subject: [Skills Exchange Network] Event Created
MIME-Version: 1.0rnContent-Type: text/html; charset=ISO-8859-1rnFrom: Skills Exchange     Network <info@skillsexchangenetwork.net>rnCc: Skills Exchange Network <info@skillsexchangenetwork.net>rn
Message-Id: <E1UzptE-0003e1-Fs@wdt.webserversystems.com>
From: skillsex@wdt.webserversystems.com
Date: Thu, 18 Jul 2013 10:13:08 -0500
X-Antivirus: AVG for E-mail 2013.0.3349 [3204/6500]
X-AVG-ID: ID58DD9571-36429B43

<html><body>Some text<br />New line<p>New para</p></body></html>

【问题讨论】:

  • 最好使用表格进行电子邮件标记
  • 这是您收到的电子邮件正文还是主题?
  • 有两个问题:标题和正文。我收到了邮件,但标题格式错误,HTML 以纯文本形式出现。可能是因为标题错误。
  • 使用适当的库,如 SwiftMailer。没有充分的理由使用 mail() 手动执行此操作。
  • 我一直在这样做,因为它的代码在服务器上运行。您是否出于特定原因建议使用 SwiftMailer...?此外,尽管我想使用 SwiftMailer,但它不会在我的系统中运行。

标签: php email


【解决方案1】:

您将 $headers 命名为 $header,因此您的内容类型未嵌入。

$headers     = 'MIME-Version: 1.0' . "\r\n";
$headers    .= 'Content-Type: text/html; charset=ISO-8859-1' . "\r\n";
$headers    .= 'From: Skills Exchange Network <Mail Address is here>' . "\r\n";
$headers    .= 'Cc: Skills Exchange Network <Mail Address is here>' . "\r\n";

【讨论】:

  • 谢谢 Yogesh 我实现了你的建议:我现在仍然在标题中遇到错误。 MIME 版本:1.0rnContent-Type:text/html; charset=ISO-8859-1rnFrom: Skills Exchange Network rnCc: Skills Exchange Network rn 显然我还有问题。
  • 事实上,它并没有做两件事:将标题分开和格式化 HTML。我收到邮件正常,但格式不正确或标题加载正确。
  • 这就是我现在所拥有的 // 构造邮件:$message = "HTML 代码在这里"; // 发送邮件: $to = "$UserMail"; $subject = "[技能交流网络] 活动创建"; // 要发送 HTML 邮件,必须设置 Content-type 标头 $headers = "MIME-Version: 1.0" 。 "\r\n"; $headers .= "内容类型:文本/html;字符集=ISO-8859-1" 。 "\r\n"; // 附加标题:$headers .= "From: Skills Exchange Network " . "\r\n"; $headers .= "抄送:技能交流网络 " 。 "\r\n"; $SendMail = mail($to, $subject, $message, $headers);
【解决方案2】:

也许你把's'放在$header的末尾?

【讨论】:

  • 现在已经纠正了,但仍然得到格式错误的标题和 HTML。
【解决方案3】:

PHPMailer 可能是一个有用的解决方案。

【讨论】:

  • 我一直在使用它,甚至使用了我之前编写的页面中的代码,这些代码运行良好,但出现了这些错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2012-02-18
  • 1970-01-01
相关资源
最近更新 更多