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

GoDaddy Linux生产环境PHP SMTP无法运行,本地环境正常

解决GoDaddy服务器上PHPMailer邮件发送失败问题

先梳理你代码里的关键问题,以及适配GoDaddy环境的解决方案:

一、代码中的核心错误

  1. SMTP服务器配置错误
    你使用Gmail邮箱账号,但将Host设为自己的域名mrcreativeproductions.com,Gmail官方SMTP服务器应为smtp.gmail.com,错误的Host会导致连接失败。

  2. 未明确启用SMTP模式
    你注释了$mail->isSMTP();,但又配置了SMTPAuth、账号密码等SMTP专属参数,PHPMailer默认会使用服务器的mail()函数发送邮件,而GoDaddy对mail()有严格限制,必须明确调用isSMTP()才能切换到SMTP模式。

  3. 报错信息拼接语法错误
    catch块里的字符串拼接存在问题,会导致错误信息无法正常显示,应修正为$alert = "<div class='alert-error'><span>". $e->getMessage() ."</span></div>";。

二、修正后的Gmail配置代码(若坚持使用Gmail)

确保你的Gmail账号已开启两步验证,且使用应用专用密码(非账号登录密码),同时确认GoDaddy服务器允许连接外部SMTP:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

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

$mail = new PHPMailer(true);
$alert = "";

if(isset($_POST['submitit'])){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];

    try {
        $mail->isSMTP();                                            
        $mail->Host       = 'smtp.gmail.com';                     
        $mail->SMTPAuth   = true;   
        $mail->Username   = 'mrcreativeproductions1@gmail.com';   
        $mail->Password   = 'jhmsxriwesuqbpnk';        
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;   
        $mail->Port       = 587;  
        
        // 建议发件人邮箱与SMTP账号一致,避免被反垃圾系统拦截
        $mail->setFrom('mrcreativeproductions1@gmail.com', 'Contact Form');
        $mail->addAddress('mrcreativeproductions1@gmail.com');    

        $mail->isHTML(true);
        $mail->Subject = 'Message received from contact: '. $name;
        $mail->Body = "Name: $name <br> Phone: $phone <br> Email: $email <br> Message: $message";

        $mail->send();
        $alert = "<div class='alert-success'><span>Message Sent! Thanks</span></div>";

    } catch (Exception $e) {
        $alert = "<div class='alert-error'><span>". $e->getMessage() ."</span></div>";
    } 
}
?>

三、GoDaddy环境推荐方案(更稳定)

GoDaddy通常禁止使用外部SMTP服务器,建议改用GoDaddy提供的域名邮箱,配置示例:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

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

$mail = new PHPMailer(true);
$alert = "";

if(isset($_POST['submitit'])){
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phone = $_POST['phone'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];

    try {
        $mail->isSMTP();                                            
        $mail->Host       = 'smtpout.secureserver.net'; // GoDaddy官方SMTP服务器
        $mail->SMTPAuth   = true;   
        $mail->Username   = 'your@mrcreativeproductions.com'; // 你的域名邮箱账号
        $mail->Password   = 'your-email-password'; // 域名邮箱密码
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;   
        $mail->Port       = 465;  
        
        $mail->setFrom('your@mrcreativeproductions.com', 'Contact Form');
        $mail->addAddress('mrcreativeproductions1@gmail.com');    

        $mail->isHTML(true);
        $mail->Subject = 'Message received from contact: '. $name;
        $mail->Body = "Name: $name <br> Phone: $phone <br> Email: $email <br> Message: $message";

        $mail->send();
        $alert = "<div class='alert-success'><span>Message Sent! Thanks</span></div>";

    } catch (Exception $e) {
        $alert = "<div class='alert-error'><span>". $e->getMessage() ."</span></div>";
    } 
}
?>

四、额外排查步骤

  1. 检查文件路径:确保PHPMailer的文件在服务器上的路径正确,可改用绝对路径,比如require $_SERVER['DOCUMENT_ROOT'] . '/PHPMailer/src/Exception.php';。
  2. 开启调试模式:在isSMTP()后添加$mail->SMTPDebug = SMTP::DEBUG_SERVER;,运行后会输出详细的SMTP交互日志,能精准定位连接或认证失败的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 06:50:27