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

Hostinger共享服务器原有正常PHP邮件表单提交成功却无法发信问题

Hostinger共享服务器PHP表单假发送成功排查方案

一、优先排查服务器端限制

Hostinger近期收紧了共享主机的PHP mail() 函数规则,这是绝大多数原有正常代码突然失效的核心原因:

  • 禁止使用非当前主机绑定域名下的邮箱作为发件人,你代码中直接用访客提交的$email作为From参数,会被服务器直接拦截邮件,但mail()函数仍会返回布尔值true,造成发送成功的假象
  • 检查你的域名DNS解析是否配置了正确的SPF记录,没有SPF记录的发件会被绝大多数邮箱服务商拒收,默认Hostinger的SPF记录值为v=spf1 include:spf.mx.hostinger.com include:relay.mailchannels.net ~all
  • 先查看你收件邮箱的垃圾邮件文件夹,确认是否是邮件被识别为垃圾邮件拦截
  • 登录Hostinger主机面板,在「高级」分类下找到「邮件日志」,可查看所有被拦截邮件的具体失败原因

二、代码修复方案

现有代码除了发件人规则不符合服务器要求外,还存在变量未初始化的小问题,优化后的代码参考如下:

<?php
// 初始化变量避免警告
$name = isset($_POST["name"]) ? trim($_POST["name"]) : '';
$email = isset($_POST["email"]) ? trim($_POST["email"]) : '';
$subject = isset($_POST["subject"]) ? trim($_POST["subject"]) : '';
$message = isset($_POST["message"]) ? trim($_POST["message"]) : '';

$EmailTo = "你的真实收件邮箱@xxx.com";
$Title = "New Message Received";
// 发件人必须替换为你当前主机绑定域名下的邮箱,比如info@你的域名.com
$senderEmail = "info@你自己的域名.com";

// 准备邮件内容
$Fields = "Name: " . $name . "\n";
$Fields .= "Email: " . $email . "\n";
$Fields .= "Subject: " . $subject . "\n";
$Fields .= "Message: " . $message . "\n";

// 配置邮件头,添加Reply-To让回复可以直接回到用户邮箱
$headers = "From: " . $senderEmail . "\r\n";
$headers .= "Reply-To: " . $email . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";

// 发送邮件
$success = mail($EmailTo,  $Title,  $Fields, $headers);

三、备选更稳定方案

如果修改后仍无法正常发信,建议放弃原生mail()函数,改用PHPMailer走SMTP协议发信,SMTP发信不受共享主机mail()函数规则限制,投递成功率远高于原生函数,可直接使用你域名下的邮箱SMTP配置、或者Gmail/Outlook等第三方邮箱的SMTP服务。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:45:03