【问题标题】:PHPMailer, DKIM, and SPF set - Emails still arriving in Junk (PHP)PHPMailer、DKIM 和 SPF 集 - 仍以垃圾邮件形式发送的电子邮件 (PHP)
【发布时间】:2013-06-09 07:27:34
【问题描述】:

我正在尝试从我的网站向用户发送激活电子邮件。不管我做什么,邮件都会直接进入垃圾文件夹。

我已登录我的 cPanel,进入电子邮件身份验证并启用域密钥和 SPF,但无济于事。

还值得一提的是,我正在使用带有默认 mail() 类型的 PHPMailer 类。我尝试使用 sendmail,但它无法执行(共享主机),我尝试了 SMTP,但我没有详细信息(据我所知)。

我还有什么需要做的吗?

这是发送电子邮件供您参考的代码。

if (isset($_SESSION['registered'])) {
    require_once '/home/wwwmcser/public_html/inc/vendor/class.phpmailer.php';

    //mail
    $mail = new PHPMailer;
    $mail->SetFrom('team@mcserverranks.com','MCSR Team');
    $mail->AddReplyTo('noreply@mcserverranks.com','No Reply');
    $mail->AddAddress($_SESSION['userEmail'],$_SESSION['userName']);
    $mail->Subject = 'Verify your account || MCServerRanks';
    $mail->Body = "removed";
    $mail->AltBody = "removed";
    if (!$mail->Send()) {
        $_SESSION['mailErr'] = 'There was an error sending your mail. This has been reported. Please contact support for assistance.';
        error_log('Mailer Error: ' . $mail->ErrorInfo);
    }
    unset($_SESSION['userEmail']);unset($_SESSION['userName']);unset($_SESSION['activateHash']);
    //show page
    //rest of page is shown below, but I've removed that

【问题讨论】:

    标签: php email phpmailer spf


    【解决方案1】:

    确保将 SPF 记录添加到 DNS TXT 记录中。 SPF 记录是相对于您用于探险的域 因此,如果您想从 IP 地址 192.168.3.4 以 user@foo.bar 的身份发送电子邮件,您需要创建(如果您不是 foo.bar 的管理员)DNS TXT 记录/ s 代表 foo.bar

    v=spf1 +ip4:192.168.3.4 -all
    

    这告诉远程服务器 foo.bar 域从 192.168.3.4 发送合法电子邮件,而所有其他来源只是伪装成 foo.bar。

    请注意,IP 可以是 ip4 或 ip6。

    您还可以添加子网、FQDN 名称、MX 记录或包含来自其他域的 SPF 记录,每个域使用单个 SPF 记录,其中包含所需数量的项目

    SPF Documentation

    【讨论】:

    • openspf.org 链接现已失效
    • @suspectus 你可以随时谷歌 SPF 记录结构
    【解决方案2】:

    这是由于您发送邮件的主机地址和发件人地址存在违规行为。如果这两个地址不属于同一服务器,则邮件应用程序会将该邮件检测为垃圾邮件或垃圾邮件。

    $mail->Host='mail.developerbaijan.com';
    $mail->Username='developerbaijan@gmail.com';
    

    这显然会由于主机和用户的不规则而导致垃圾邮件。如果发件人地址是这样,也可能以相同的方式结束邮件。

    你应该这样尝试

    $mail->Host='mail.google.com';
    $mail->Port=587;
    $mail->SMTPAuth=true;
    $mail->SMTPSecure='tls';
    $mail->Username='username@google.com';
    $mail->Password='*********';
    $mail->setFrom('username@google.com','name');
    

    【讨论】:

      【解决方案3】:

      将您的地址设置为他们在自动电子邮件中的地址,以便他们从看似他们自己的电子邮件中收到一封电子邮件,标题为“需要身份验证..成功”等 - 这将防止垃圾邮件问题,但除非现场指定,否则可能会使一些客户感到困惑

      【讨论】:

      • 这看起来有点脏……不是吗?
      • 它有效 - 取决于你的网站是否是专业的 - 那么这不是要走的路 - 它只是垃圾问题的简单解决方案 - 甚至我想要的一些电子邮件也会到达垃圾所以虽然这是狡猾的它的工作原理!
      • 不幸的是,该网站是专业的。然而,现在我注意到它似乎只是将其视为垃圾邮件的微软服务(hotmail、outlook、msn)。 gMail 按预期处理它,所以我有点奇怪。
      • 这种变通方法现在不起作用。无论如何,这不是解决问题的方法。您应该在 DNS 中检查您的 SPF(TXT 条目)。
      猜你喜欢
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 2012-01-16
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      相关资源
      最近更新 更多