我使用PHPMailer通过我控制的SMTP服务器发送电子邮件,并且设置了DKIM和SPF并正常工作。但是,当我将testing电子邮件发送到我的gmail帐户时,它立即转到垃圾邮件文件夹,并声明我的电子邮件与垃圾邮件filter检测到的邮件类似。
但是,如果我然后使用Outlook通过相同的SMTP服务器发送完全相同的邮件,它不会被筛选为垃圾邮件。
这些是来自垃圾邮件的邮件标题
Delivered-To: [email protected] Received: by 10.227.117.6 with SMTP id o6csp468220wbq; Thu, 16 Aug 2012 00:21:15 -0700 (PDT) Received: by 10.43.117.129 with SMTP id fm1mr196323icc.1.1345101675202; Thu, 16 Aug 2012 00:21:15 -0700 (PDT) Return-Path: <bounce+95719fab75@my_smtp_server_domain.com> Received: from mailapproved.com (mailapproved.com. [199.195.193.140]) by mx.google.com with ESMTP id s18si1547632igi.61.2012.08.16.00.21.14; Thu, 16 Aug 2012 00:21:15 -0700 (PDT) Received-SPF: pass (google.com: domain of bounce+95719fab75@my_smtp_server_domain.com designates 199.195.193.140 as permitted sender) client-ip=199.195.193.140; Authentication-Results: mx.google.com; spf=pass (google.com: domain of bounce+95719fab75@my_smtp_server_domain.com designates 199.195.193.140 as permitted sender) smtp.mail=bounce+95719fab75@my_smtp_server_domain.com; dkim=pass [email protected] Received: from ml.my_smtp_server_domain.com.com (ml.my_smtp_server_domain.com.com [199.195.193.133]) by my_smtp_server_domain.com.com (Postfix) with ESMTPA id E3CC68E057 for <[email protected]>; Thu, 16 Aug 2012 07:21:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=my_smtp_server_domain.com; s=server1; t=1345101672; bh=TsyHxri8hUJjEnMBm8JUJzfLs5a3ea9aRZQ15toMNyQ=; h=Date:To:From:Reply-to:Subject:List-Unsubscribe; b=hOUSOx/fN8ZwTlEp4KBAKSGRZHgH6kSj0xUeLlq8J2JGBEE2x6c2b5sh/nFwqx45T kuorzu3TsLDDMHCBLmSNLfrYWqyCzkT4Iwh1NJlCL5zm4GwYDXVrVsd+6AjJNfzPN+ W5idEJ62+MCgsMqgCd6gmpACMcqntgwgp+WcLKFc= Date: Thu, 16 Aug 2012 15:21:12 +0800 To: Me <[email protected]> From: Someone <no-reply@my_smtp_server_domain.com> Reply-to: No Reply <no-reply@my_smtp_server_domain.com> Subject: Welcome to Blah Message-ID: <[email protected]_smtp_server_domain.com> List-Unsubscribe: <mailto:unsubscribe@my_smtp_server_domain.com?subject=Unsubscribe>, <http://ml.my_smtp_server_domain.com.com/unsubscribe/e783daa664> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_f2039f590798697bc998c686920020df"
这里有两个服务器:my_smtp_server_domain.com是SMTP服务器,ml.my_smtp_server_domain.com是一个邮件应用程序(用于双人OP的合法通讯)。
邮件本身只是邮件列表的简单确认邮件。
我不明白当我使用Outlook时如何工作,但与PHPmailer失败,有什么不同?
由Outlook和PHPMailer,或任何其他邮件发送的标头是不同的。 很多垃圾邮件filter会在检测到这些邮件头时自动增加邮件的垃圾邮件分数。 这大概是因为它们在垃圾邮件中非常stream行。
首先删除标识发送系统为PHPMailer的任何头文件。 如果这样做没有帮助,那么请查看邮件本身并尝试对其进行修改,使其看起来不像垃圾邮件,因为您的邮件可能在边缘。
我使用PHPMailer的时候遇到了同样的问题,下面是解决这个问题的方法:将发件人(与“发件人”不同且不同)设置为发送电子邮件的域的有效电子邮件帐户。 这会导致PHPMailer正确设置“信封来源”信息,以便电子邮件通过SPF和发件人IDvalidation。 如果不这样做,“信封来源”是一个操作系统级别的用户ID和服务器组合,这是不可validation的。 我希望这有帮助。
示例代码:
$mail = new PHPMailer; $mail->From = '[email protected]'; $mail->Sender = '[email protected]'; ...