我刚刚更新了一个联系表单,使用PHPMailer来阻止电子邮件被标记为垃圾邮件,没有运气。
这是一个相当直接的设置我正在使用,但它仍然会进入人们的垃圾邮件。
这是我的剧本,我想知道是否有人能说出错了什么?
include_once('../inc/phpmailer/class.phpmailer.php');
$mail = new PHPMailer();
$name = $_POST['name'];
$email = $_POST['email'];
$body = "Name: ".$name."\r\n";
$body .= "Email: ".$email."\r\n";
$body .= "Message: ".$_POST['message'];
$mail->From = "mailer@blah.com";
$mail->FromName = "Contact BLah";
$mail->Subject = "Contact From: Blah";
$mail->Body = $body;
$mail->AddAddress("john@blah.com", "john");
$mail->AddAddress("david@blah.com", "david");
if(!$mail->Send()) {
$errorMsg .= "Error sending message, please try again later.";
} else {
$errorMsg .= "Message Sent successfully.";
}
我认为PHPmailer通常需要插入正确的标题?
有什么想法吗?
编辑:添加垃圾邮件分数
-Spam-Status:“得分= 0.0测试=无版本= 3.1.7 cmae = v = 1.0 c = 1 a = 8nJEP1OIZ-IA:10 a = soyWjZv28gkhNSke5wm04A ==:17 a = fqdOs_Nl9wd82e3SDigA:9 a = l-lynuxnH-gfU2bevBoA:7 a = wPNLvfGTeEIA:10 a = nymK5Bb5l1cA:10 a = _6wjLm_vFSYA:10 xcat =未定义/未定义“ X-Spam-Level:*
编辑2:我刚刚在客户端的不同服务器上尝试了该脚本,结果相同。我是否必须通过SMTP设置发送它才能被归类为垃圾邮件?
答案 0 :(得分:13)
您的邮件可能被标记为垃圾邮件的一些原因:
等...
PHPMailer是一个工具。把它当作一把锤子。锤子可能弯曲钉子,但仅仅是因为持有者没有向右瞄准。
解决此问题的唯一方法是检查退回邮件(如果有)以及收件人邮箱中显示的内容。如果他们收到邮件,但它进入垃圾邮件文件夹,则获取邮件副本并检查其标题。大多数垃圾邮件过滤器会将垃圾邮件分数/推理放在那里。
答案 1 :(得分:7)
小提示:
添加像这样的行
$mail->AddReplyTo( 'mailer@blah.com', 'Contact BLah' );
它应该会显着降低您的垃圾邮件评级。
答案 2 :(得分:1)
我在使用PHPMailer时遇到了同样的问题,以及解决这个问题的方法:将发件人(这与" From"不同且不同)设置为有效的电子邮件帐户对于您发送电子邮件的域名。这会导致PHPMailer正确设置"信封来自"信息,以便电子邮件通过SPF和Sender-ID验证。没有这样做,"信封来自"是OS用户ID和服务器组合,无法验证。
示例代码:
$mail = new PHPMailer;
$mail->From = 'from_email@domain.com';
$mail->Sender = 'sender_email@domain.com';
...
答案 3 :(得分:0)
不一定是PHPMailer的错,您的服务器被列入黑名单有几种可能的原因。您可以查看here以查看是否发生了这种情况