PHP邮件使用标签时发送

时间:2012-09-24 12:28:40

标签: php newline sendmail

使用标签时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标签。但它是垃圾邮件。

3 个答案:

答案 0 :(得分:2)

$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

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

答案 1 :(得分:2)

您必须为新行使用<br>标记。

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

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

答案 2 :(得分:0)

正如其他人所说,如果您要发送<br />的电子邮件,则需要使用HTML换行符Content-Type: text/html。换行符/回车符将在消息来源中解释为换行符,但它们可能不会呈现为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
}