PHPMailer 5.2.1运行报错Class 'PHPMailer' not found问题求助
修复方案
这个报错本质是PHP无法加载到PHPMailer类的定义,绝大多数情况是类文件引入失败导致,按照以下步骤排查修复即可:
第一步:修复类文件引入路径问题
- Linux服务器对路径大小写敏感,首先核对
assets、PHPMailer_5.2.1、class.phpmailer.php的大小写拼写和实际存储路径完全一致。 - 可在
inviomailbonifico.php最顶部加入调试代码验证路径是否正确:
var_dump(file_exists("assets/PHPMailer/PHPMailer_5.2.1/class.phpmailer.php")); die;
如果输出bool(false)说明路径错误,修正为正确的相对路径即可,推荐用__DIR__拼接绝对路径避免相对路径异常,5.2版本使用SMTP发信还需要额外引入SMTP类文件:
require __DIR__ . "/assets/PHPMailer/PHPMailer_5.2.1/class.phpmailer.php"; require __DIR__ . "/assets/PHPMailer/PHPMailer_5.2.1/class.smtp.php";
如果路径验证为bool(true)仍报错,说明你使用的PHPMailer安装包文件损坏,重新下载官方PHPMailer 5.2.1完整包替换即可。
第二步:修正PHPMailer配置问题
路径正确后调整原有代码里的错误配置项,完整可用的PHP代码参考:
<?php require __DIR__ . "/assets/PHPMailer/PHPMailer_5.2.1/class.phpmailer.php"; require __DIR__ . "/assets/PHPMailer/PHPMailer_5.2.1/class.smtp.php"; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = "smtp.society.it"; $mail->SMTPAuth = true; $mail->Username = '实际SMTP账号'; // 替换为真实发件邮箱账号 $mail->Password = '实际SMTP密码'; // 替换为真实发件邮箱授权码/密码 $mail->SMTPSecure = 'tls'; // 按需配置,多数SMTP服务需要tls加密对应端口587,ssl加密对应端口465 $mail->Port = 587; $mail->CharSet = "utf-8"; // 删掉重复的无效编码配置,保留utf-8即可 $mail->Subject = "Coordinate bancarie"; // 自定义填充银行转账通知内容 $messaggio = "尊敬的".$_POST['nome']." ".$_POST['cognome'].",您好:<br>您的订单银行转账信息如下:<br>收款人:XXX<br>收款账号:XXX<br>开户行:XXX"; $mail->MsgHTML($messaggio); $mail->AltBody="L'email è in formato html."; $mail->AddAddress($_POST['email']); $mailscuola = "实际发件邮箱地址"; // 和SMTP账号保持一致 $nomescuola = "name soc"; $mail->From=$mailscuola; $mail->FromName=$nomescuola; if(!$mail->Send()) { echo "Si è verificato un errore nell'invio dell'email: ".$mail->ErrorInfo; } ?>
第三步:优化前端JS传参逻辑
原有传参方式存在特殊字符转义异常的风险,修改为对象传参更稳妥:
function mandamail(){ var nome = $("#nome").val(); var cognome = $("#cognome").val(); var email = $("#email").val(); $.ajax({ type: "POST", url: "inviomailbonifico.php", data: { nome: nome, cognome: cognome, email: email }, success:function(msg){ console.log(msg); $("#alert").html("controlla la mail per effettuare il bonifico").show(); } }) }
内容的提问来源于stack exchange,提问作者alessio scionti
相关产品推荐
相关产品推荐

