You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP mail()函数发信除Gmail外均进入垃圾邮箱,求绕过垃圾过滤方法

可直接落地的调整方案

  • 域名DNS配置(优先级最高,90%的垃圾邮件问题都是因为没配这些)
    • 添加SPF记录:记录值为v=spf1 +a +mx +ip4:替换为你的服务器公网IP ~all,明确授权你的服务器IP可以代表发件域名发送邮件
    • 配置DKIM签名:在服务器端的邮件传输代理(Postfix/Sendmail等)开启DKIM,同时在域名DNS中添加对应的DKIM公钥记录
    • 添加DMARC记录:初始记录值可设为v=DMARC1; p=none; sp=none,等邮件投递稳定后再调整策略为 quarantine/reject
  • 调整现有Mail.php代码问题
    现有代码存在头部拼接不规范的问题,不同邮箱服务商对错误头部的容忍度不同,是导致Gmail可过、其他服务商判垃圾的常见原因:
    1. 拼接$headers前先初始化变量,避免未定义警告导致头部异常:每次拼接前加$headers = '';
    2. 确保From、Return-Path、Reply-To三个字段的域名完全一致,不要使用示例域名example.com,替换为你的真实发件域名
    3. 移除不必要的自定义头部:X-Priority、X-Mailer这类非标准头部更容易触发垃圾邮件规则,可直接删除
    4. 适当增加邮件内容的个性化程度,自动回复中可加入用户提交的具体信息,降低模板化内容的占比
  • 服务器端配置调整
    • 校验服务器公网IP的信誉,确认未进入Spamhaus等主流反垃圾IP黑名单,如有记录需提交申诉移除
    • 为服务器公网IP配置反向解析(PTR记录),解析值与发件域名保持一致,Outlook、Yahoo对PTR记录的校验优先级远高于Gmail
    • 避免使用共享IP服务器发信,共享IP上其他用户的发信行为会直接影响IP信誉,建议使用独立公网IP

调整后的代码示例:

Mail.php

<?php

function autoResponderEmail($name, $email) {
    
    $subject = "Thank you for submitting the form";
    $from = "替换为你的真实发件邮箱";
    $organization = "替换为你的真实组织名称";
    $message = "Thank you " . $name ." for contacting us. We will be in touch with you shortly." . "\n\n" . "Regards,\n" . $organization . " Team";
    
    // 初始化headers避免报错
    $headers = "";
    $headers .= "Reply-To: ".$organization." <".$from.">\r\n"; 
    $headers .= "Return-Path: ".$organization." <".$from.">\r\n"; 
    $headers .= "From: ".$organization." <".$from.">\r\n";  
    $headers .= "Organization: ".$organization."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8\r\n";
    
    $sendMail = mail($email, $subject, $message, $headers);

    if ($sendMail) {
        header('Location: ./index.html');

    } else {
        echo "<script>alert('Failed to send email');</script>";
    }
    
}

if(isset($_POST['submit'])){
    $to = "替换为你的真实收件邮箱";
    $organization = "替换为你的真实组织名称";
    $full_name = $_POST['full_name'];
    $from = $_POST['email_address'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
    
    
    $detail = "";
    $detail .= "Name: " . $full_name . "\r\n";
    $detail .= "Email: " . $from . "\r\n";
    $detail .= "Phone: " . $phone . "\r\n";
    $detail .= "Subject: New Contact Inquiry" . "\r\n";
    $detail .= "Organization: " . $organization . "\r\n";
    $detail .= "Message: " . $message . "\r\n";
    
    // 初始化headers避免报错
    $headers = "";
    $headers .= "Reply-To: ".$organization." <".$to.">\r\n"; 
    $headers .= "Return-Path: ".$organization." <".$to.">\r\n"; 
    $headers .= 'Cc: waqas.jamal@sixlogs.com' . "\r\n";
    $headers .= "From: ".$organization." <".$to.">\r\n";  
    $headers .= "Organization: ".$organization."\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8\r\n";
    // 修复原代码未定义$subject的问题
    $sendMail = mail($to, "New Contact Inquiry", $detail, $headers);

    if ($sendMail) {
        autoResponderEmail($full_name, $from);
    } else {
        echo "<script>alert('Failed to send email');</script>";
    }


};
?>

内容的提问来源于stack exchange,提问作者iftikharyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:45:04