PHPMailer类找不到报错求助:Let’s Encrypt证书脚本故障
问题:PHPMailer Exception类未找到导致脚本发送邮件失败
运行用于生成Let’s Encrypt证书的脚本时出现报错:
550: Failed to spawn mail-process (ec:16) Error: Class "PHPMailer\PHPMailer\Exception" not found
脚本相关代码片段:
###sending it as email: ########################################################## # sendCertificate ########################################################## use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; include('PHPMailer.php'); function sendCertificate($myemail) { global $argv; global $account_number; $email = new PHPMailer(); $email->setFrom($myemail); //Name is optional $email->Subject = 'ssl certificate files'; $email->Body = " https://kis.hosteurope.de/administration/webhosting/admin.php?menu=6&mode=ssl_list&wp_id=$account_number Zertifikat: fullchain.pem Key: cert_private_key.pem "; $email->addAddress($myemail); $file_to_attach = __DIR__ . '/'.$argv[3]; $email->addAttachment($file_to_attach , $argv[3]); $file_to_attach = __DIR__ . '/fullchain.pem'; $email->addAttachment($file_to_attach , 'fullchain.pem'); $sent = $email->send(); if($sent) { echo "sending certificates by mail ... OK "; } else { echo "sending certificates by mail ... ERROR "; print_r( error_get_last() ); } } sendCertificate($argv[1]); ?>
环境:GoDaddy虚拟主机,PHP 8.1版本,脚本数周未改动,已尝试更新PHPMailer.php至最新版本。
解决方案
1. 补充引入Exception类文件
报错核心原因是脚本仅引入了PHPMailer.php,但未加载Exception.php文件——最新版PHPMailer将Exception类单独拆分到独立文件中。修改代码中的引入部分:
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; // 同时引入Exception.php include('PHPMailer.php'); include('Exception.php');
2. 验证文件路径正确性
确认PHPMailer.php和Exception.php与脚本文件处于同一目录,若PHPMailer文件存放在子目录(如./PHPMailer/),需调整引入路径:
include('./PHPMailer/PHPMailer.php'); include('./PHPMailer/Exception.php');
3. 检查文件权限
GoDaddy虚拟主机对文件权限有严格限制,确保PHPMailer.php和Exception.php的权限设置为644(所有者可读写,其他用户只读),避免服务器无法读取文件。
4. 确认PHPMailer版本兼容性
确保下载的PHPMailer版本支持PHP 8.1(推荐PHPMailer 6.8及以上版本),可通过查看PHPMailer的说明文件确认兼容性。
内容的提问来源于stack exchange,提问作者Nowei
相关产品推荐
相关产品推荐

