【问题标题】:PHP Mail Send when using a tag使用标签时的 PHP 邮件发送
【发布时间】:2012-09-24 12:28:40
【问题描述】:

使用标签时PHP邮件发送问题,它没有换行。 这是我的代码有同样的问题

$subject = 'Watch Out Our Colorful Web Design Presentation';
$headers = "From: " . $email . " \r\n";
$headers .= "Reply-To: ". $email . "\r\n";
$headers .= "Bcc: test@test.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

$message = "Watch Out Our Colorful Web Design Presentation.\r\n";
$message .= "<a href='http://www.stackoverflow.com'>CLICK HERE</a>\r\n";
mail($to, $subject, $message, $headers);    

邮件发送成功,但在 \r\n 中出现问题。它不需要换行。我也试过 br 标签。但它会进入垃圾邮件。

【问题讨论】:

  • 我认为 /r/n 被忽略了,因为内容类型是 text/html。将 Content-Type 设置为 text/plain 但 HTML 标记不起作用
  • 我需要 text/html 因为我必须在其中放置一个标签。如果我删除一个标签,那么它工作正常。

标签: php newline sendmail


【解决方案1】:
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

您正在发送 HTML 电子邮件。这意味着您应该使用 HTML 而不是换行符。为避免您的电子邮件被放入垃圾文件夹,您应该阅读一些many Stackoverflow topics on the subject

【讨论】:

  • 其实我发过很多次邮件但是从来没有出现过这种问题。这可能是因为我在发送邮件时使用了 a 标签
【解决方案2】:

你必须使用&lt;br&gt; 标记换行。

您不能将\n 用于html 打印的新行。

https://bugs.php.net/bug.php?id=9542

【讨论】:

  • 我的意思不是在 html 中,而是在标题中。很抱歉没有解释得这么好
  • 我也试过了,但它在浏览器中显示一个新行,但在发送邮件时不起作用
  • @MohamedHassan:谢谢它现在可以工作了,但是邮件在新行中有问题,但它进入了垃圾文件夹。
【解决方案3】:

正如其他人所说,如果您使用Content-Type: text/html 发送电子邮件,则需要使用HTML 换行符&lt;br /&gt;。换行符/回车符将在消息源中被解释为换行符,但它们可能不会呈现为 HTML。

从 PHP 发送电子邮件时,我总是建议使用电子邮件类而不是 PHP 的本机邮件函数。

我倾向于使用SwiftMailer。它的优点是所有邮件标头都经过清理和转义,以避免标头注入漏洞,这些漏洞可能会通过您的脚本引发垃圾邮件。此外,使用各种电子邮件传输更容易。还有一个很棒的装饰器插件,它可以发送数千条带有自定义字符串的消息,用于执行“亲爱的 {first_name} {surname}”或自定义取消订阅/跟踪链接等操作。

这里有一些 SwiftMailer 的示例代码,以防您有兴趣...

// START SWIFTMAILER
require_once($swiftmailer_path);
$swift_transport = Swift_SendmailTransport::newInstance($sendmail_cmd);
$swift = Swift_Mailer::newInstance($swift_transport);
$swift_msg = Swift_Message::newInstance($swift_transport);
$swift_msg->setMaxLineLength(150);
$swift_msg->setFrom( array('NoReply@domain.com' => 'MyWebsiteName'));
$swift_msg->addTo($user);
$swift_msg->setSubject($subject);
$swift_msg->setBody($msg_html, 'text/html');
$swift_msg->addPart($msg_txt, 'text/plain');

// SEND E-MAIL
if ($swift_result = $swift->send($swift_msg)) {
    // SENT SUCCESSFULLY
} else {
    // ERROR - E-MAIL NOT SENT
}

【讨论】:

  • 不适合我,因为我在这里没有使用任何课程。
猜你喜欢
  • 2011-03-09
  • 1970-01-01
  • 2012-07-28
  • 2020-06-12
  • 1970-01-01
  • 2020-08-29
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多