TL; DR:从共享主机发送的邮件(例如Unoeuro或One.com的廉价域名)最终会被垃圾邮件发送.怎么修?
我制作了一个邮件系统,首先生成一个PDF文件(使用FPDF),然后将PDF文件作为附件发送给PHP的Swiftmailer.这封电子邮件已发送给130人(作为“一张发票”).但是几乎每个人都陷入垃圾邮件过滤器.我尝试调整SwiftMailers标头设置,但没有任何运气.即使是我以前没有寄过的邮件(经过全面测试).这是我最初的设置:
function sendMailEt($toEmail, $toName, $invoiceNumber){
require_once('includes/lib/swift_required.PHP');
$transport = Swift_SmtpTransport::newInstance('mailout.one.com', 25)
->setUsername('EMAIL-ACCOUNT1@THE-DOMAIN.DK')
->setPassword('THE-PASSWORD')
;
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('FROM COMPANY')
->setSubject('Thanks for signing up - COMPANY')
->setFrom(array('EMAIL-ACCOUNT1@THE-DOMAIN.DK' => 'Company name'))
->setTo(array($toEmail => $toName))
->setBody('A brief body, that explains that this is an invoice and that it has to be paid within 5 days. (written in danish)')
->addPart('A brief body, that explains that this is an invoice and that it has to be paid within 5 days. (written in danish)', 'text/html')
->attach(Swift_Attachment::fromPath('/URL-TO-THE-PDF-FILE.pdf'))
;
$result = $mailer->send($message);
}
我还尝试使用PHP的本机mail() – 函数发送电子邮件,然后只需链接到发票(http://www.company-domain-name.dk/invoice/base64_encoded-name.pdf)…相同结果(垃圾邮件).
我自己尝试编写整个标题.我已经阅读了大量有关标题应该包含的论坛,但它们都写了不同的东西.所以我尝试了一些不同的东西(我以前寄过的电子邮件和我没有发过的电子邮件)……同样的结果(垃圾邮件).
然后我尝试完全按照MailChimps的标题编写标题.这导致我这样:
$headers = "Reply-To: Company name <UNUSED-EMAIL-ACCOUNT-FROM-DOMAIN@DOMAIN-NAME.DK>\r\n";
$headers .= "Return-Path: Company name <UNUSED-EMAIL-ACCOUNT-FROM-DOMAIN@DOMAIN-NAME.DK>\r\n";
$headers .= "From: Message from Company name <UNUSED-EMAIL-ACCOUNT-FROM-DOMAIN@DOMAIN-NAME.DK>\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Sender: Message from Company name <UNUSED-EMAIL-ACCOUNT-FROM-DOMAIN@DOMAIN-NAME.DK>\r\n";
$headers .= "Content-type: text/plain; charset=\"utf-8\"; \r\n";
$headers .= "X-Mailer: PHP". PHPversion() ."\r\n";
然后我发送这样的邮件:
mail($toName . '<'.$toEmail.'>', utf8_decode('Faktura på depositumet'), utf8_decode($someMessage), $headers);
网站空间是One.com,所以我不能使用PHPmailer(因为必须安装,而且不能在one.com的服务器上完成).我无法使用One.com定义SPF.
这是我的问题:
>是因为我的标题是关闭的,还是“更深层次”?
> Gmail垃圾邮件过滤器是否禁止单个电子邮件帐户(例如
this@example.com)或禁止整个域名(例如
@ example.com)?
>可以将列入黑名单的电子邮件列入白名单
不知何故?
*增加1 *
好的……我现在尝试过很多东西:
>我尝试添加LoneWolfPR的返回路径,就像推荐的那样,并没有帮助.
>我联系了One.com(托管公司),并与他们确认,无法设置SPF记录或DKIM记录.它仍然不是.
>我考虑建立一个’取消订阅’链接,链接到一个带有表单的网站,但我不相信这种方法.我的意思是 – 通过电子邮件随时发送发票.为什么你能取消订阅发票?!由于这在我的脑海里远远没有意义,所以我只尝试了大约20分钟(显然,没有结果).
这是我当前的电子邮件标题(通过点击“查看原始文件”从Gmail获取):
Delivered-To: NEWLY-CREATED-GMAIL-ACCOUNT@gmail.com
Received: by 10.76.75.104 with SMTP id b8csp48728oaw;
Sat, 16 Mar 2013 17:32:56 -0700 (PDT)
X-Received: by 10.152.116.45 with SMTP id jt13mr7897860lab.0.1363480376067;
Sat, 16 Mar 2013 17:32:56 -0700 (PDT)
Return-Path: <XXX111@DOMAIN-NAME.dk>
Received: from mail-out2.b-one.net (mail-out2.one.com. [91.198.169.19])
by mx.google.com with ESMTP id p10si4637427lbb.120.2013.03.16.17.32.55;
Sat, 16 Mar 2013 17:32:55 -0700 (PDT)
Received-SPF: neutral (google.com: 91.198.169.19 is neither permitted nor denied by best guess record for domain of XXX111@DOMAIN-NAME.dk) client-ip=91.198.169.19;
Authentication-Results: mx.google.com;
spf=neutral (google.com: 91.198.169.19 is neither permitted nor denied by best guess record for domain of XXX111@DOMAIN-NAME.dk) smtp.mail=XXX111@DOMAIN-NAME.dk
Date: Sat, 16 Mar 2013 17:32:55 -0700 (PDT)
Message-Id: <51450f37.6a0b700a.6239.5dbcSMTPIN_ADDED_MISSING@mx.google.com>
Received: from localhost.localdomain (srv18.one.com [193.202.110.18])
by mail-out2.b-one.net (Postfix) with ESMTP id F3D0B10365
for <NEWLY-CREATED-GMAIL-ACCOUNT@gmail.com>; Sun, 17 Mar 2013 01:32:53 +0100 (CET)
Received: from 85.218.159.219 by www.DOMAIN-NAME.dk via URL_TO_THE_SCRIPT.PHP with HTTP; Sun, 17 Mar 2013 00:32:53 +0000
To: RECIEVERS_NAME <NEWLY-CREATED-GMAIL-ACCOUNT@gmail.com>
Subject: EMAIL-SUBJECT
X-PHP-Originating-Script: 87486:NAME-OF-THE-SCRIPT-THE-E-MAIL-WAS-SENT-FROM.PHP
Reply-To: COMPANY NAME <XXX111@DOMAIN-NAME.dk>
From: Besked fra COMPANY NAME <XXX111@DOMAIN-NAME.dk>
MIME-Version: 1.0
Sender: Besked fra COMPANY NAME <XXX111@DOMAIN-NAME.dk>
Content-type: text/plain; charset="utf-8";
X-Mailer: PHP5.3.21
解决方法:
1)通常情况下,电子邮件地址不会轻易进入黑名单,需要时间和/或很多人将您标记为垃圾邮件发送者才能将该地址实际列入黑名单.
2)是的.整个域名可以列入黑名单,因为垃圾邮件发送者通常会生成随机的电子邮件地址,如f4j3ifl@something.com.
3)它与spamBox的次数无关紧要,基本上,垃圾邮件过滤器现在很强大,因为垃圾邮件发送者试图改善他们日复一日的方式,因此过滤器每天都变得更加严格.如果它第一次进入垃圾邮件文件夹,并且用户实际上没有将其放入垃圾邮件箱,它将继续运行,除非用户取消标记,或者您解决了问题.
如何避免spamBox?
基本上你需要一些签名,并且需要大量访问你的DNS记录,因为我们将在那里完成大部分设置.
>反向DNS查询:在专用服务器上甚至在某些VPS上,您可以设置反向DNS记录,有时您只需打开一张票,IT就会为您设置.如果您无法拥有它,请更改您的主机或继续标记为垃圾邮件发送者xD.这是为了防止标题伪造,因为您可以在您的标题上设置您的电子邮件来自gmail.com,但这不是电子邮件服务器检查它的方式.
> SPF也是必须的,如果你不能设置SPF然后甚至不再尝试,考虑改变你的托管,你几乎可以在这里停止阅读xD.
> DKIM /域密钥:最好是DKIM,是加密签名,您在DNS上设置公钥,并在您的电子邮件服务器中存储私钥,当服务器收到电子邮件时,它在标题中附加了私钥(你需要一个管理DKIM的邮件服务器软件,例如它适用于我的hmail服务器)和邮件服务(例如gmail)将检查你的DNS记录以查看公钥是否匹配.这几乎是必须的
这三个是基础知识,如果您设置Dmarc和ADSP,它将为您提供SpamAssassins的更好分数.为了获得更好的分数搜索谷歌上的一些垃圾邮件关键字列表,并试图避免它们,一些东西,如用“亲爱的xxx”开始发送电子邮件对你的分数有害,设置未取消的系统(即使它很糟糕,只要很长时间因为你提供了明确的链接)也会帮助你.
也:
>避免草率的html和白色文本覆盖(任何)背景,一些垃圾邮件发送者使用它来适应隐藏文本,这些过滤器比你想象的更聪明.
>阅读具体建议.大多数电子邮件服务都在其网站上提供了常见问题解答或其他一些提示,以帮助您发送电子邮件而不是进入垃圾邮件.在其中一些你甚至可以申请进入一个白名单(至少在几年前,在一些服务,如Gmail,他们不再这样做)
>如果您批量发送,请留意时间!如果你每秒都有X封电子邮件被发送到某个地方,你可能会进入黑名单,设置一个脚本或者什么东西以便延迟1秒钟,延迟可能取决于进入黑名单的目的地.
希望这些技巧可以帮助你,我最近不得不处理一些垃圾邮件过滤器,这是一个痛苦的屁股,这就是为什么我知道所有这些信息,这就是我所有的研究xD即使在我设置的所有签名和事情之后,一些电子邮件仍然进入spamBox(一个较小的百分比,但它仍然伤害我)唯一可靠的方法是让用户将您添加到联系人列表(同时正确签名和标题),所以提醒他们这样做,如果可能的话.