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

使用PHPMailer发送邮件异常:切换Hostinger邮箱后仅Contabo收件

问题排查与解决方案

核心原因推测

你遇到的问题大概率是DNS MX记录未正确更新,或者服务器本地邮件服务拦截了邮件投递路径,导致邮件仍被路由到Contabo的本地邮箱,而非Hostinger的邮件服务器。以下是具体排查步骤:


1. 强制检查域名MX记录

MX记录决定了邮件的路由方向,必须确保你的域名xxx.gr的MX记录指向Hostinger的邮件服务器:

  • 使用命令行工具查询:
    nslookup -type=MX xxx.gr
    
  • 正常情况下,Hostinger的MX记录应为:
    xxx.gr	IN	MX	10 mx1.hostinger.com.
    xxx.gr	IN	MX	20 mx2.hostinger.com.
    
  • 如果查询结果显示Contabo的MX记录,说明DNS未更新,需要在域名DNS管理面板(域名注册商或DNS托管平台,比如Cloudflare)替换MX记录为Hostinger提供的地址。

2. 检查Cloudflare MX记录状态

Cloudflare不能代理MX记录,需确保:

  • 登录Cloudflare域名控制台,找到MX记录条目,确认右侧的云朵图标为灰色(DNS-only),而非橙色(Proxy状态)。若为橙色,切换为DNS-only后等待DNS生效(可降低TTL加速生效,通常1-48小时)。

3. 完善PHPMailer的完整配置

你提供的代码仅为基础配置,需确保开启SMTP认证并正确设置发件人,避免本地投递或认证失败:

require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';
require 'PHPMailer/Exception.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

$mail = new PHPMailer(true);

try {
    // Server settings
    $mail->isSMTP();                                            // 启用SMTP发送
    $mail->Host       = 'smtp.hostinger.com';                   // SMTP服务器地址
    $mail->SMTPAuth   = true;                                   // 开启SMTP认证
    $mail->Username   = 'info@xxx.gr';                          // SMTP用户名
    $mail->Password   = 'xxxxx';                                // SMTP密码
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;            // 启用SSL加密
    $mail->Port       = 465;                                    // SMTP端口

    // 收件人与发件人设置
    $mail->setFrom('info@xxx.gr', 'Website Contact');           // 发件人需与SMTP用户名一致
    $mail->addAddress('info@xxx.gr');                           // 添加收件人

    // 邮件内容
    $mail->isHTML(true);                                        // 设置HTML格式
    $mail->Subject = 'Message from website ' . $_SERVER['SERVER_NAME'];
    $mail->Body    = 'Your message content here';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
  • 关键注意点:setFrom的邮箱必须与SMTP用户名info@xxx.gr一致,否则可能被Hostinger拒绝或触发本地投递逻辑。

4. 禁用Contabo服务器的本地邮件服务

如果Contabo服务器上运行着Postfix、Exim等本地MTA(邮件传输代理),它可能会优先将发往info@xxx.gr的邮件投递到本地系统邮箱,而非通过Hostinger的SMTP发送:

  • 停止并禁用本地MTA服务(以Postfix为例):
    sudo systemctl stop postfix
    sudo systemctl disable postfix
    
  • 或者修改本地MTA配置,将xxx.gr的邮件转发到Hostinger的MX服务器,避免本地拦截。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:45:32