【问题标题】:Send HTML mails using PHP [duplicate]使用 PHP 发送 HTML 邮件 [重复]
【发布时间】:2012-12-18 07:13:38
【问题描述】:

可能重复:
Sending HTML email from PHP

我正在通过我的 gmail 帐户使用 php 发送电子邮件。我使用的是ssmtp而不是sendmail。我正在使用以下 php 代码发送邮件。

$to = "mymail@gmail.com";
$from = "mymail@gmail.com";
$subject = "Testing mail";
$header  = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset: utf8\r\n";     
$headers = "From:" . $from;
$message = "<html><body><head></head>";
$message .= "<h1>Hello, World!</h1>";
$message .= "</body></html>";

if(mail($to,$subject,$message,$headers)){
   echo "Mail Sent.";
} else {
   echo 'failed';
}

但我收到如下邮件

<html><body><head></head><h1>Hello, World!</h1></body></html>

这可能是什么原因?我在 Ubuntu 中使用 ssmtp MTA。

【问题讨论】:

  • Content-type: text/html; charset: 应该是Content-type: text/html; charset=
  • html 电子邮件是邪恶的。如今,它们是恶意软件感染的主要来源。不要使用它们。
  • 您应该看看SwiftMailer 等库,它们是发送电子邮件的更清洁、更安全的方式。
  • $header 更改为$headers,它应该可以工作

标签: php html ssmtp


【解决方案1】:

使用这个

<?php
$to = "mymail@gmail.com";
                $from = "mymail@gmail.com";
                $subject = "Testing mail";
                $header  = "MIME-Version: 1.0\r\n";

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

                $header .= "From:" . $from;

                $message = "<html><body><head></head>";
                $message .= "<h1>Hello, World!</h1>";
                $message .= "</body></html>";

                if(mail($to,$subject,$message,$headers)){
                echo "Mail Sent.";
                } else {
                echo 'failed';
                }
?>

【讨论】:

  • 谢谢.. 我掉了一个 '.'将另一个附加到标题时。我没看到。现在效果很好。
【解决方案2】:

尝试在您的代码中使用以下内容

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

此链接最有帮助

Sending HTML email with PHP

【讨论】:

  • Hai Frankline..我正在关注该链接..但我仍然收到相同的邮件..是因为 ssmtp 吗?
  • 通过简单的SMTP发送是否有效?
【解决方案3】:

您正在模糊地使用标题(单数)和标题(复数)。正确的方法是使用复数作为标题:

$headers  = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

这是一个很好的阅读: http://css-tricks.com/sending-nice-html-email-with-php/

【讨论】:

    【解决方案4】:

    那是因为 PHP 不会自己创建新行。你可以使用 echo "Lalala \n" 来换行。

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 2015-12-10
      相关资源
      最近更新 更多