-2

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

//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)) {}

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

4

3 回答 3

1

这个 shd工作

   <?
  $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"
?>

这里

于 2012-06-30T07:30:48.810 回答
0

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

使用经过身份验证的 SMTP 或 IMAP 服务器和可靠的提供商而不是匿名的本地 SMTP 服务器可能会获得更好的结果(因为它可能是未知的,或者对于大多数大型网络邮件提供商来说是不安全的)。

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

于 2012-06-30T07:19:31.500 回答
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");
}
于 2012-06-30T07:25:14.797 回答