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

PHP邮件功能无法运行(Error 500),寻求技术帮助

帮你解决PHPMailer发送邮件的500错误问题

我完全理解你现在的沮丧——花了好几个小时折腾一个完全不懂的代码领域,还一直碰500错误,换谁都崩溃😔。别着急,咱们一步一步来,我会用最直白的话给你讲清楚怎么做,不需要你懂太多代码。

首先搞懂Error 500是什么

这个错误是服务器在告诉你“我内部出问题了”,大概率是你的代码写错了、PHPMailer的文件路径不对,或者邮箱配置出错了。咱们先从最基础的测试开始。

第一步:确认你的文件结构

你上传的PHPMailer文件夹,要和你写的邮件脚本(比如叫sendmail.php)放在同一个目录里。比如:

  • 你的网站根目录
    • sendmail.php(你要写的测试脚本)
    • PHPMailer(这个是你下载的文件夹,里面必须有src子文件夹,且包含PHPMailer.php、SMTP.php、Exception.php这三个核心文件)

如果你的PHPMailer文件夹名字是PHPMailer-master(下载下来默认可能是这个),记得后面代码里的路径要对应修改。

第二步:用最简化的测试脚本

把下面的代码复制到sendmail.php里,然后把里面的大写内容换成你自己的信息:

<?php
// 引入PHPMailer的核心文件
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// 这里的路径要和你的PHPMailer文件夹对应!
// 如果你的PHPMailer文件夹叫PHPMailer-master,就改成'PHPMailer-master/src/...'
require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';

// 创建邮件实例
$mail = new PHPMailer(true);

try {
    // -------------------------- 服务器配置(必须改!)--------------------------
    $mail->SMTPDebug = 2;                    // 打开调试模式,能看到具体错误(测试完可以改成0关闭)
    $mail->isSMTP();                         // 用SMTP发送邮件
    $mail->Host       = 'SMTP服务器地址';     // 比如QQ邮箱是smtp.qq.com,163邮箱是smtp.163.com
    $mail->SMTPAuth   = true;                // 开启SMTP认证
    $mail->Username   = '你的邮箱账号';       // 比如xxx@qq.com
    $mail->Password   = '你的邮箱授权码';     // 注意!不是登录密码!QQ/163等邮箱需要去设置里开POP3/SMTP,然后生成授权码
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // 加密方式,选SMTPS对应465端口,或者STARTTLS对应587端口
    $mail->Port       = 465;                 // 端口号,和上面的加密方式对应

    // -------------------------- 收件人配置(必须改!)--------------------------
    $mail->setFrom('你的邮箱账号', '你的名字'); // 发件人信息
    $mail->addAddress('收件人邮箱', '收件人名字'); // 给谁发邮件

    // -------------------------- 邮件内容 --------------------------
    $mail->isHTML(true);                    // 邮件内容可以是HTML格式
    $mail->Subject = '网站访问通知';         // 邮件标题
    $mail->Body    = '有人访问了你的网站特定节点!'; // 邮件内容
    $mail->AltBody = '有人访问了你的网站特定节点!'; // 纯文本版本,给不支持HTML的邮箱用

    $mail->send();
    echo '邮件发送成功!';
} catch (Exception $e) {
    echo "邮件发送失败:{$mail->ErrorInfo}";
}
?>

重点提醒:授权码怎么弄?

以QQ邮箱为例:

  1. 登录QQ邮箱,点右上角的【设置】->【账户】
  2. 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】
  3. 开启【POP3/SMTP服务】,然后按照提示生成授权码,这个授权码就是你要填到$mail->Password里的内容,不是你的QQ登录密码!

第三步:测试脚本

把sendmail.php传到主机上,然后在浏览器里访问这个文件的URL(比如你的域名/sendmail.php)。

  • 如果显示“邮件发送成功”,说明配置没问题了!
  • 如果显示错误信息,把错误信息记下来,就能精准定位问题(比如SMTP服务器填错了、授权码不对、文件路径错误等等)

第四步:整合到你的特定节点

等测试脚本成功后,你只需要把上面的核心代码(除了最外层的<?php和?>)复制到你那个“特定节点”的页面里,比如用户访问你的域名/特定节点.php时,就会自动执行这段代码发送邮件。

常见的500错误原因

  1. 路径错误:比如require的路径不对,PHPMailer的文件找不到,检查文件夹名字和路径是否匹配。
  2. 权限问题:PHPMailer的文件权限要设置成644,文件夹权限设置成755(主机控制面板里一般能修改)。
  3. 服务器扩展未开启:有些主机可能没开openssl扩展(发送加密邮件需要这个),可以联系主机服务商帮忙开启。

慢慢来,先把测试脚本跑通,再整合到你的页面里,肯定能搞定的!

内容的提问来源于stack exchange,提问作者B.Ashcroft

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:23:26