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

使用PHP+PHPMailer实现注册表单发邮件,邮件无法送达如何解决

PHPMailer配置及邮件发送实现方案

你代码中实例化PHPMailer后没有任何配置、内容填充和发送调用,这是邮件无法发送的核心原因,参考以下配置方案:

完整PHPMailer配置代码(替换你代码中$mail = new PHPMailer();后空缺的部分)

try {
    // 启用SMTP调试模式,调试完成后改为0关闭 0=关闭 1=客户端消息 2=客户端+服务器消息
    $mail->SMTPDebug = 2;
    // 设置使用SMTP
    $mail->isSMTP();
    // 发件邮箱的SMTP服务器地址 比如QQ邮箱是smtp.qq.com,163邮箱是smtp.163.com
    $mail->Host = 'smtp.qq.com';
    // 启用SMTP认证
    $mail->SMTPAuth = true;
    // 发件人邮箱地址
    $mail->Username = '你的发件邮箱地址@qq.com';
    // 发件邮箱的SMTP授权码,不是邮箱登录密码,需要去邮箱后台开启SMTP服务后获取
    $mail->Password = '你的SMTP授权码';
    // 启用TLS加密,端口用587;也可以用SSL加密,端口对应465
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;
    // 设置发件人信息,第二个参数是发件人显示名称
    $mail->setFrom('你的发件邮箱地址@qq.com', '站点名称');
    // 添加收件人,这里用用户提交的邮箱
    $mail->addAddress($email, $firstname.' '.$lastname);
    // 设置邮件编码 避免中文乱码
    $mail->CharSet = 'UTF-8';
    // 邮件内容为HTML格式
    $mail->isHTML(true);
    // 邮件标题
    $mail->Subject = '注册成功 - 你的登录凭证';
    // 邮件正文
    $mail->Body    = '您好 '.$firstname.' '.$lastname.',<br>你的注册账号为:'.$email.',初始登录密码为:'.$password.',请登录后及时修改密码。';
    // 非HTML客户端的备用显示内容
    $mail->AltBody = '您好 '.$firstname.' '.$lastname.',你的注册账号为:'.$email.',初始登录密码为:'.$password.',请登录后及时修改密码。';

    // 调用发送方法
    $mail->send();
} catch (Exception $e) {
    echo "邮件发送失败: {$mail->ErrorInfo}";
    exit;
}

必要配置检查项

  • 首先需要登录你用作发件的邮箱后台,开启SMTP服务,获取对应的SMTP授权码,注意此处填写的不是邮箱的登录密码,是专属SMTP授权码
  • 如果你本地使用XAMPP运行,需要确认本地没有防火墙拦截587/465端口的出站请求
  • 调试完成后把SMTPDebug改为0,避免泄露敏感信息

原代码额外优化建议

  • 存在SQL注入风险,不要直接拼接SQL语句,改用mysqli预处理语句执行查询和插入操作
  • 不要明文存储用户密码,插入数据库前用password_hash($password, PASSWORD_DEFAULT)对密码做哈希处理
  • rand(0,999999)生成的密码强度过低,建议用更安全的随机字符串生成方式

内容的提问来源于stack exchange,提问作者Tzi138

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:45:04