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

如何解决PHP mail发送邮件被归入垃圾邮件文件夹的问题

解决PHP发送邮件被归入垃圾邮箱的问题

我用下面的PHP代码发送邮件,但邮件总是被放进垃圾邮箱,求帮忙解决,让邮件能正常进入收件箱。

function sendEmail($content,$email,$phone){
  $headers = "Reply-To: Danuel <".$email.">
";
  $headers .= "Return-Path:Danuel <".$email.">
";
  $headers .= "From:Danuel <".$email.">
"; 
  $headers .= "Organization:Danuel international
";
  $headers .= "MIME-Version: 1.0
";
  $headers .= "Content-type: text/plain; charset=iso-8859-1
";
  $headers .= "X-Priority: 3
";
  $headers .= "X-Mailer: PHP". phpversion() ."
";
  $to ="xxxxxxxxx@gmail.com";
  $subject ="Number ".$phone." Banned";
  return mail($to, $subject, $content, $headers);
}

if(isset($_POST['send'])){
    $content='Hey';
    
    if(sendEmail($content,$_POST['email'],$_POST['phone'])==1){
       echo"<small><font color=green>Sent</font></small>";
    }else{
       echo"<small><font color=red>Failed</font></small>";
    }
}

核心解决步骤

  • 修正发件人身份
    直接用用户提交的邮箱作为发件人是触发垃圾邮件判定的关键——服务器无法验证这个外部邮箱的合法性。应该改用你的服务器域名下的可信邮箱(比如noreply@yourdomain.com)作为From地址,保留用户邮箱在Reply-To里,这样用户回复时仍能回到正确邮箱,同时让邮件来源更可信。

  • 配置SPF和DKIM域名记录
    登录域名托管平台,添加SPF记录(指定允许发送邮件的服务器IP或域名),以及DKIM签名(给邮件添加加密验证标识)。这两项是邮箱服务商判断邮件合法性的核心依据,配置后能大幅降低被标记为垃圾邮件的概率。

  • 优化邮件内容与标题
    当前邮件内容仅为Hey,标题含Banned这类敏感词汇,极易被判定为垃圾邮件。建议补充具体内容(比如封禁原因、申诉方式),修改标题为更规范的表述,例如账号封禁通知:手机号{$phone},同时确保内容无违规关键词。

  • 修复邮件头格式
    原代码中邮件头的换行使用单个换行符,标准邮件头应该用\r\n作为换行分隔符,避免解析错误。另外将字符集改为utf-8适配更多语言环境,同时对邮件标题进行Base64编码,防止乱码。

  • 考虑替换邮件发送方式
    PHP内置的mail()函数依赖服务器sendmail配置,默认通常缺少身份验证。建议使用PHPMailer或SwiftMailer这类成熟库,它们支持SMTP身份验证,能更稳定地发送邮件,减少被拦截的可能。

修改后的示例代码

function sendEmail($content,$email,$phone){
  // 改用服务器可信的发件人邮箱
  $senderEmail = "noreply@yourdomain.com";
  $senderName = "Danuel International";

  $headers = "Reply-To: Danuel <{$email}>\r\n";
  $headers .= "Return-Path: {$senderEmail}\r\n";
  $headers .= "From: {$senderName} <{$senderEmail}>\r\n"; 
  $headers .= "Organization: Danuel International\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-type: text/plain; charset=utf-8\r\n";
  $headers .= "X-Priority: 3\r\n";
  $headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
  
  $to = "xxxxxxxxx@gmail.com";
  $subject = "账号封禁通知:手机号{$phone}";
  // 对标题进行Base64编码,避免乱码
  $subject = "=?UTF-8?B?".base64_encode($subject)."?";
  
  return mail($to, $subject, $content, $headers);
}

if(isset($_POST['send'])){
    // 补充具体邮件内容
    $content = "您好,您的手机号{$_POST['phone']}已被封禁,原因:[请补充具体原因]。若有疑问,请联系客服。";
    
    if(sendEmail($content,$_POST['email'],$_POST['phone'])){
       echo"<small><font color=green>发送成功</font></small>";
    }else{
       echo"<small><font color=red>发送失败</font></small>";
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:01:18