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邮箱为例:
- 登录QQ邮箱,点右上角的【设置】->【账户】
- 找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】
- 开启【POP3/SMTP服务】,然后按照提示生成授权码,这个授权码就是你要填到
$mail->Password里的内容,不是你的QQ登录密码!
第三步:测试脚本
把sendmail.php传到主机上,然后在浏览器里访问这个文件的URL(比如你的域名/sendmail.php)。
- 如果显示“邮件发送成功”,说明配置没问题了!
- 如果显示错误信息,把错误信息记下来,就能精准定位问题(比如SMTP服务器填错了、授权码不对、文件路径错误等等)
第四步:整合到你的特定节点
等测试脚本成功后,你只需要把上面的核心代码(除了最外层的<?php和?>)复制到你那个“特定节点”的页面里,比如用户访问你的域名/特定节点.php时,就会自动执行这段代码发送邮件。
常见的500错误原因
- 路径错误:比如
require的路径不对,PHPMailer的文件找不到,检查文件夹名字和路径是否匹配。 - 权限问题:PHPMailer的文件权限要设置成644,文件夹权限设置成755(主机控制面板里一般能修改)。
- 服务器扩展未开启:有些主机可能没开
openssl扩展(发送加密邮件需要这个),可以联系主机服务商帮忙开启。
慢慢来,先把测试脚本跑通,再整合到你的页面里,肯定能搞定的!
内容的提问来源于stack exchange,提问作者B.Ashcroft
相关产品推荐
相关产品推荐

