所有的电子邮件都进入GMail, Hotmail和其他使用phpmailer的电子邮件提供商的垃圾邮件文件夹


All E-mails goes to spam folder of GMail, Hotmail and other email providers using phpmailer

最近我在使用PHP Mailer功能发送电子邮件时遇到了一个问题。我从脚本中发送的每封邮件都直接进入GMail, HotMail和其他邮件提供商的垃圾邮件文件夹。

我已经用我的域名,密码等配置了一切。

下面是我的PHP代码:
$message = "
<html>
<head>
  <title>Activation</title>
</head>
<body>
<p>Hello moorthi , </p>
<p>Thank you for Using My Mail Service <b><a href='http://www.mobilebeez.co.in/'>mobileBeez </a></b></p><br/>
<p><b>mobileBeez Technologies<b><br>Chennai, India.</p>
<p><a href='https://www.facebook.com/mobileBeez'>https://www.facebook.com/mobileBeez</a></p>
</body>
</html>
";
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->Host = "vps.vendarcorporates.com";
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Port = 465; 
$mail->IsHTML(true);
$mail->Username = "info@vendarcorporates.com";
$mail->Password = "***************";
$mail->SetFrom("info@vendarcorporates.com");
$mail->FromName   = "mobile Beez";
$mail->AddReplyTo("info@vendarcorporates.com","mobile Beez");
$mail->Subject = "Activate your Account";
$mail->Body = $message;
$mail->AddAddress("moorthi@gmail.com"); // To Address
if($mail->Send()) {
  print json_encode("SUCCESS");
}
else {
  echo "Mailer Error: " . $mail->ErrorInfo;
}

我得到了像SUCCESS这样的结果,这意味着"邮件成功发送"。但是当我检查我的GMail时,我发送的邮件是在垃圾邮件文件夹。

在我的服务器上,这是邮件配置

Secure SSL/TLS Settings (Recommended)
Username:   info@vendarcorporates.com
Password:    Use the email account’s password.
Incoming Server:    vps.vendarcorporates.com
                        IMAP Port: 993
                        POP3 Port: 995
Outgoing Server:    vps.vendarcorporates.com
                        SMTP Port: 465
Authentication is required for IMAP, POP3, and SMTP.

最近我在用PHP Mailer发邮件时遇到了一个问题函数。我从剧本中发送的每一封邮件都是直接发送的在GMail, HotMail和其他邮件提供商的垃圾邮件文件夹。

这个问题与PHP Mailer,您的代码甚至您的主机无关。但它与你的主机名上的整体发送邮件设置有关。甚至IP地址。意思是当你这么说的时候:

我得到了像SUCCESS这样的结果,这意味着"邮件成功发送"。但是当我检查我的GMail时,我发送的邮件是在垃圾邮件文件夹。

正确,您的邮件实际上是由服务器发送的。这很好。但是接收端的邮件服务器不相信你的主机名或IP地址。可以做一些事情来弥补这一点。例如在主机名的DNS中设置和SFP记录;为实际发送邮件的服务器的IP地址设置PTR(反向DNS)记录

第一,最重要的是,vendarcorporates.com是一个实际的域名吗?在这个工具上对它进行ping,全局ping显示一致的Unknown host: vendarcorporates.com结果。如果是这样的话& &;你想用这个来发送,这就是你的问题所在。

就SPF记录而言,这是一条DNS记录,意思是"发送方策略框架",其基本含义是:您作为主机名的所有者允许这些其他IP地址&代表您发送电子邮件的主机名。这里有更多的细节,特别是这个:

更准确地说,SPFv1允许指定一个域的所有者他们的邮件发送策略,例如,他们使用哪个邮件服务器发送邮件来自他们域名的邮件。这项技术需要双方合作together: (1)域所有者在SPF中发布此信息记录在域的DNS区域,当别人的邮件服务器接收到声称来自该域的消息,则(2)接收服务器可以检查消息是否符合域声明的政策。如果,例如,消息来自一个未知服务器,它可以被认为是假的。

设置的方法是在DNS中设置一个TXT(文本)记录,如下所示:

"v=spf1 ip4:123.45.67.890 ~all"

假设您的域名是vendarcorporates.com,这样的SPF记录将在接收端工作如下:

  • 嘿,我刚收到一封自称是vendarcorporates.com的人发来的电子邮件!
  • 该消息连接的IP地址是否直接属于vendarcorporates.com ?
  • 如果它是连接到vendarcorporates.com的IP地址,那么一切都好!
  • 但是这个IP地址是123.45.67.890,没有连接到vendarcorporates.com。让我们检查一下SPF记录。
  • 好的,我正在读取SPF记录,并且允许123.45.67.890vendarcorporates.com发送电子邮件,所以让这条消息通过。

这可能不能完全解决问题。因此,除了SPF记录外,您还需要确保您的服务器有一个有效的PTR(反向DNS)记录,该记录在某种程度上与您的主机名匹配。

与将主机名转换为IP地址的DNS记录不同,PTR记录是将IP地址转换为主机名的反向DNS记录。更多信息请访问维基百科。

如何设置PTR取决于你的主机的工作方式。

  • 像RackSpace这样的地方允许客户自己设置PTR记录。
  • 其他如亚马逊AWS将允许您请求PTR记录,但他们需要批准。
  • 和许多其他人根本不会让你自己设置PTR记录。您需要联系您的托管服务&让他们为你建立一个PTR记录。

PTR记录很重要的原因是它是"这是垃圾邮件吗?"链。所以结果是这样的:

  • 嘿,我刚收到一封自称是vendarcorporates.com的人的电子邮件!
  • 该消息连接的IP地址是否直接属于vendarcorporates.com ?

第二步是检查邮件的IP地址是否连接到vendarcorporates.com ?这是PTR记录检查。

我很有信心SPF和;PTR记录为您的域名&主机设置将解决这个问题。

如果你有SPF防晒霜,PTR记录创下,但电子邮件最终成为垃圾邮件?这意味着你的主机名和/或IP地址被列入黑名单了。这是你要处理的另一大堆麻烦。您可以使用MX Toolbox &等在线工具检查黑名单状态。按照个人服务建议请求删除您。但根据你在这个列表中排名的严重性,这可能是一个简单的任务,也可能是一个非常复杂的任务。

也就是说,虽然像PHP Mailer这样的工具简化了发送电子邮件的过程,但是确保您的电子邮件不被标记为SPAM的整个过程是另一个众所周知的怪物,与编码细节几乎没有关系。

这里的好事是你的电子邮件正在被ISP接收,如gmail…这意味着你的代码(phpMailer)工作得很好,所以它的问题,使垃圾肯定不是代码,而是别的东西。如果没有一些细节,比如isp生成的标题,我很难帮助你的票,你试图到达它的收件箱文件夹,但我可以给你一些例子,可能会影响你的电子邮件:例如你在电子邮件中使用的内容(html,words,from,Subject),您的ip地址和域名用于SND电子邮件的声誉。此外,您还必须验证发送域是否有spf记录,授权您的ip从该记录发送。