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

本地开发表单提交正常,部署到BlueHost后无法发邮件求助

问题排查与解决方案

1. 适配BlueHost的SMTP配置

BlueHost虚拟主机对外部SMTP服务有严格限制,必须改用官方提供的邮件服务器:

  • 替换Nodemailer的Transport配置为BlueHost专属信息:
    const transporter = nodemailer.createTransport({
      host: 'mail.yourdomain.com', // 替换为你的域名对应邮件服务器
      port: 465,
      secure: true,
      auth: {
        user: 'your-bluehost-email@yourdomain.com', // 你的BlueHost邮箱账号
        pass: 'your-email-password' // 邮箱独立密码,不是cPanel登录密码
      }
    });
    
  • 禁止使用外部SMTP(如Gmail、QQ邮箱),BlueHost会封禁这类端口请求。

2. 服务器端端口与CORS配置

  • 确认server.cjs监听的端口与BlueHost cPanel中Node.js应用分配的端口完全一致(BlueHost不会开放80/443端口,通常是30000+的自定义端口)。
  • 修正CORS的origin配置,必须指定你的网站域名(如https://yourdomain.com),不能用通配符或本地地址:
    cors({
      origin: 'https://yourdomain.com',
      credentials: true
    })
    

3. 前端请求地址修正

  • 替换前端表单提交的API地址为生产环境地址(如https://yourdomain.com/api/send-email),删除开发环境的localhost地址。
  • 确保前端请求使用HTTPS协议,BlueHost强制HTTPS,HTTP请求会被拦截导致提交失败。

4. 日志与权限排查

  • 在server.cjs的Nodemailer发送逻辑中添加错误日志输出:
    transporter.sendMail(mailOptions, (error, info) => {
      if (error) {
        console.error('邮件发送失败:', error); // 打印错误到服务器日志
        return res.status(500).send('发送失败');
      }
      res.status(200).send('发送成功');
    });
    
  • 通过BlueHost cPanel的「Node.js应用」面板查看日志,根据具体错误信息定位问题(如认证失败、端口封禁、发送超限)。
  • 检查文件权限:确保server.cjs及依赖包权限为644,文件夹权限为755,避免因权限不足导致服务异常。

5. 邮箱账号验证

  • 确认你的BlueHost邮箱已完成激活,未被标记为垃圾邮件发送者。
  • 检查BlueHost邮箱的发送限制(默认每小时最多500封),避免因超限导致发送失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:56:17