php邮件功能直接进入垃圾文件夹

时间:2014-01-27 14:14:15

标签: php email

我已经设置了一个基本字段的联系表单。表单将发送给站点所有者,并将消息发送给提交表单的客户。该功能有效,但始终将消息发送到垃圾文件夹。我的标题是否有问题,或者只是热门垃圾设置。

$headers = "MIME-Version: 1.0rn"; 
$headers .= "Content-type: text/html; charset=iso-8859-1rn"; 
$headers  .= "From: contact@mysite.com\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error");

邮件是HTML电子邮件,只是一种更好的显示邮件的方式。同样在我的电子邮件帐户中,而不是显示我的varable,它说'CGI Mailer' - 令人困惑。

更新 - 不再适用

//mail customer
$from = 'donotreply@mysite.co.uk';
$subject = 'Your message has been recieved.';

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= 'From: My Site <'.$from.'>' . "\r\n";

$msg = '
<html>
<head>
<link href="http://linktocss/.../etc" rel="stylesheet" type="text/css" />
</head>
<body>
formatted message...
</body>
</html>
';
mail($email, $subject, $msg, $headers)or die("mail error");

2 个答案:

答案 0 :(得分:2)

修改

这对我有用,并没有最终出现在SPAM / Junk中,而是出现在我的收件箱中。

<?php
//mail customer
$from = 'donotreply@mysite.co.uk';
$to = "email@example.com";
$subject = 'Your message has been received.';

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: The Sending Name <$from>\r\n";

$msg = '
<html>
<head>
<link href="http://linktocss/.../etc" rel="stylesheet" type="text/css" />

</head>
<body>
formatted message...
</body>
</html>
';
mail($to, $subject, $msg, $headers)or die("mail error");

?>

脚注:我注意到您使用的是外部样式表。 Google等许多电子邮件服务都不会提供这些服务。最好使用inline styling来获得更好/更理想的结果。


原始答案

最可能的)原因(根据您发布的代码)为什么您的邮件最终在垃圾邮件中是您的标头无效。

您已将rn聚集在一起,而不是使用\r\n

请改用:

$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers  .= "From: contact@mysite.com\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error");

或者更好,使用:取自PHP website's mail() function

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers  .= "From: contact@mysite.com\r\n"; 
mail($to, $subject, $message, $headers)or die("mail error");

答案 1 :(得分:1)

现在,电子邮件客户端和服务器对发送服务器的电子邮件执行大量检查,例如反向DNS查找,灰名单和whatevs。所有这些测试都将失败,使用php mail()函数。如果您使用动态IP,则更糟糕。

使用PHPMailer-Class并将其配置为使用smtp-auth以及配置良好的专用SMTP服务器(本地SMTP服务器或远程服务器),您的问题就会消失。