使用Hostinger免费企业邮箱SMTP发邮件报错SMTP connect() failed的解决方法
解决PHPMailer连接Hostinger SMTP服务器失败的问题
针对你遇到的SMTP connect() failed.错误,可从以下几个方面排查修复:
1. 修正端口与加密方式的匹配
Hostinger SMTP支持两种配置组合,原代码的465+SSL可能因环境证书问题失败,建议切换为更兼容的组合:
- 将
$mail->Port = '465';改为$mail->Port = 587;(使用整数类型,去掉引号) - 将
$mail->SMTPSecure = 'ssl';改为$mail->SMTPSecure = 'tls';
2. 删除手动设置的Header代码
代码中手动赋值$mail->header的行为会破坏PHPMailer自动生成的标准邮件头,直接删除以下两行:
$mail->header='MIME-Version: 1.0' . "\r\n"; $mail->header.='Content-type: text/html; charset=UTF-8' . "\r\n";
你已经设置了$mail->IsHTML(true);,PHPMailer会自动添加正确的MIME头。
3. 验证账号与权限
- 确认
$mail->Username是Hostinger后台创建的完整邮箱地址,无拼写错误 - 确认邮箱密码正确,注意大小写、特殊字符,若修改过密码需同步更新
- 登录Hostinger后台的邮箱管理面板,确认SMTP服务处于开启状态
4. 检查服务器环境限制
- 测试服务器是否能访问Hostinger SMTP端口:执行命令
telnet smtp.hostinger.com 587,若无法连接,联系主机商开放对应端口 - 检查PHP是否启用
openssl扩展(SSL/TLS连接依赖此扩展),可通过phpinfo()查看状态
5. 更新PHPMailer版本
旧版PHPMailer存在SMTP兼容性bug,建议更新至最新稳定版,同时使用新版推荐的小写方法名(如isSMTP()替代IsSMTP(),send()替代Send())
修正后的完整代码示例
function send_email($receiver_email,$subject,$message) { $mail = new PHPMailer; $mail->isSMTP(); $mail->Host = 'smtp.hostinger.com'; $mail->Port = 587; $mail->SMTPAuth = true; $mail->SMTPDebug = 2; // 生产环境建议改为0关闭调试 $mail->Username = 'support@kachandarululoomnijamiamadrasah.org'; $mail->Password = '你的邮箱密码'; $mail->SMTPSecure = 'tls'; $mail->From = 'support@kachandarululoomnijamiamadrasah.org'; $mail->FromName = 'Kachan Darul Uloom Nijamia Madrasah'; $mail->addAddress($receiver_email); $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $message; if($mail->send()) { return true; } else { return $mail->ErrorInfo; } }
内容的提问来源于stack exchange,提问作者Mamun All Rasid
相关产品推荐
相关产品推荐

