帮助,注册电子邮件转到垃圾邮件收件箱

时间:2011-02-10 17:33:18

标签: php email gmail spam email-spam

我刚开始在我的网站上提供用户帐户(大型PR6网站,声誉良好),我注意到注册电子邮件几乎总是发送到接收垃圾邮箱。

到目前为止,我们只发了几封电子邮件,所以它不像我们一直在抨击成千上万。

我使用mail()函数通过PHP发送电子邮件。您可以在下面找到我使用mail()函数发送的标题。

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers  .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers  .= 'From: Domain.com <noreply@mydomain.com>' . "\r\n";

有没有办法或技巧来绕过这些垃圾邮件过滤器?它显然不是我发送的垃圾邮件。注册邮箱包含3个链接。

3 个答案:

答案 0 :(得分:6)

有很多事情可能导致电子邮件被标记为垃圾邮件。解决方案有两个:一方面你应该使用一个好的smtp服务器(可传递性),然后你应该正确地形成你的电子邮件。 (使用mail()的艰巨任务。)

使用PHP正确发送电子邮件

你应该使用像PHPMailer这样的东西。它是一个用于发送电子邮件的PHP库,并且正确地执行它们,因此电子邮件更有可能正确到达。

http://phpmailer.worxware.com/

电子邮件递送

电子邮件递送可能很令人头疼,但我可以推荐http://www.sendgrid.com - 您基本上将它们设置为phpmailer的smtp服务器并使用他们的外发邮件服务器..他们是电子邮件传送专家,你将拥有一个更容易的时间。特别是当你开始发送大量的电子邮件时。

代码示例

来自phpmailer网站的电子邮件示例:

<?php
require_once('../class.phpmailer.php');

$mail             = new PHPMailer();

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug  = 2;  // enables SMTP debug information (for testing)
                                       // 1 = errors and messages
                                       // 2 = messages only
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "smtp.sendgrid.net"; // sets the SMTP server to sendgrid's server
$mail->Port       = 25;                    // set the SMTP port for the GMAIL server
$mail->Username   = "emailuser@host.com"; // Sendgrid user
$mail->Password   = "yourpassword";        // Sendgrid passw.

$mail->SetFrom('name@yourdomain.com', 'First Last');

$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->Subject    = "PHPMailer Test Subject via smtp, basic with authentication";

$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->MsgHTML($body);

$address = "whoto@otherdomain.com";
$mail->AddAddress($address, "John Doe");

echo !$mail->Send() ? "Mailer Error: " . $mail->ErrorInfo : "Message sent!";    
?>

我想说我在任何方面都不隶属于Sendgrid。我只是他们服务的忠实粉丝。我在web开发商店里与mail()函数,smtp服务器,邮件队列和服务进行了多年的战斗,我不希望这个命运成为我最大的敌人。节省一些时间和担忧。

干杯...

答案 1 :(得分:0)

你可能已经这样做了,但我要检查的一件事是你在电子邮件中没有关键词,这对垃圾邮件过滤器来说是个大红旗。显然,“注册”是必要的,但要避免使用经常出现在真实垃圾邮件中的其他词语。我确信垃圾邮件过滤器对电子邮件中的链接数量也很敏感,因此从3减去它可能也是一个好主意。

答案 2 :(得分:0)

来自http://pauldowman.com/2008/02/17/smtp-mail-from-ec2-web-server-setup/

的一些提示

如果您使用第三方smtp中继,例如authsmtp,则应将spf记录添加到DNS中。

  

spfwizard.com。

不要欺骗From字段

  

你应该只发送邮件   somebody@yourdomain.com。如果你试着   发送邮件   例如,somebody @ pauldowman.com,   接收器会看到   pauldowman.com有SPF记录,和   它没有授权你的邮件   服务器。然后进入垃圾邮件文件夹   去。

     

要解决此问题,您可以发送   像noreply@yourdomain.com这样的东西,   并将Reply-To标头设置为   somebody@pauldowman.com。你甚至可以   在from字段中设置名称,用于   例如:“Paul Dowman通过yoursite”   。答复   标题将确保最多   人们的回复是正确的   地址,但少数将不可避免地结束   在noreply@yourdomain.com,所以这是   建立一个可能是个好主意   在该地址的自动回复,或在   至少要确保消息反弹   用户最终意识到了   错误。

我第二次使用PHPMailer()。照顾好一堆小东西。