PHP邮件()显示为垃圾邮件

时间:2012-06-30 07:14:38

标签: php

这是我的注册电子邮件示例,该电子邮件向用户发送电子邮件以激活其帐户。

//send activation email

$to      = $email;
$subject = "Activate your account!";
$headers = "From: Example.com\r\n";
$headers .= "CC: $email\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$server = "http://www.example.com";

ini_set("SMTP", $server);
$body = "<table style='border-top:1px solid #707070;border-bottom:1px solid #707070;margin-top:5px;'>";
$body .= "<tr><td colspan='2'><span style='font-family:arial;font-size:12px;color:#000000;'>Your login details are as follows; </span></td></tr>";
$body .= "<tr style='background-color:#f2f4f6;margin-bottom:5px;'><td>Username:</td><td>$username</td></tr>";
$body .= "<tr style='background-color:#f2f4f6;margin-bottom:5px;'><td>Password:</td><td>$password</td></tr></table>";
$body .= "<table><tr><td><span style='font-family:arial;font-size:12px;color:#000000;'>Follow the link:</span></td>";
$body .= "<td><a style='text-decoration:underline;font-family:arial;font-size:12px;color:#264971' href='http://www.example.com/activate.php?id=$lastid&code=$random'>http://www.example.com/activate.php?id=$lastid&code=$random</a></td>";
$body .= "</tr></table>";
$body .= "</body></html>";

//function to send email

if (mail($to, $subject, $body, $headers)) {}

在测试用户注册时,激活电子邮件最终会出现在SPAM文件夹中。我需要改变什么才能纠正这个问题?

3 个答案:

答案 0 :(得分:1)

这个工作

   <?
  $headers .= "Organization: Sender Organization\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
  $headers .= "X-Priority: 3\r\n";
  $headers .= "X-Mailer: PHP". phpversion() ."\r\n"
?>

来自here

答案 1 :(得分:0)

这看起来很正常。您的电子邮件显示为垃圾邮件的原因有很多(通常与电子邮件服务器和客户端的类型,收到的垃圾邮件过滤引擎以及您的域/服务器的历史活动相关)。

使用经过身份验证的SMTP或IMAP服务器与可靠的提供程序而不是匿名的本地SMTP服务器(因为它可能未知或被认为对大多数大型Webmail提供程序不安全)可能会有更好的结果。

(几乎)永远不会被标记为垃圾邮件的唯一可靠方法是要求用户将您添加到白名单中。

答案 2 :(得分:0)

使用phpMailer smtp方法简单易行。 http://code.google.com/a/apache-extras.org/p/phpmailer/

或者您可以使用此代码,可能会对您有所帮助:

function email($to,$name,$subject,$message)
{
    $content='<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>'.$subject.'</title>
    </head>
    <body>
    '.$message.'
    </body>
    </html>';
    $smtp_server = "mailserver.domain.com";
    $port = 25;
    $mydomain = "domain.com";
    $username = "info@domain.com";
    $from = "From Name";
    $password = "myEmailPassword";
    $headers = "From: $from <info@domain.com>\r\n";
    $headers .= "To: $name <$to>\r\n";
    $headers .= "Reply-To: info@domain.com\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
    $handle = fsockopen($smtp_server,$port);
    fputs($handle, "HELO $mydomain\r\n");
    fputs($handle, "AUTH LOGIN\r\n");
    fputs($handle, base64_encode($username)."\r\n");
    fputs($handle, base64_encode($password)."\r\n");
    fputs($handle, "MAIL FROM:<$username>\r\n");
    fputs($handle, "RCPT TO:<$to>\r\n");
    fputs($handle, "DATA\r\n");
    fputs($handle, "$headers \nSubject: $subject \n$content \r\n");
    fputs($handle, ".\r\n");
    fputs($handle, "QUIT\r\n");
}