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

Express Node.js应用中Nodemailer(email-templates)无法发邮件至Gmail

邮件发送问题排查与代码结构分析

问题背景

邮件可发送至除Gmail邮箱外的其他邮箱,推测这是谷歌取消第三方信任后的常见问题。应用从站点托管服务器发送邮件,未使用个人邮箱,且无报错信息。

当前代码

const sendMail = async (to) => {
  const Email = require("email-templates");
  const email = new Email({
    message: {
      from: "",
      to: to,
      subject: "Detail Added ",
      text: `insert text here`,
      html: `<p>insert text here</p>`,
    },
    send: true,
    transport: {
      host: "",
      port: 465,
      ssl: true,
      tls: true,
      auth: {
        user: "", // your Mailtrap username
        pass: "", //your Mailtrap password
      },
    },
  });

  await email.send().then(console.log).catch(console.error);
};

(注:出于隐私已移除host等敏感信息)

代码结构合理性分析

整体结构是合理的:

  • 用异步函数封装邮件发送逻辑,符合email-templates的异步调用规范
  • 配置划分清晰,将邮件内容(message)和传输配置(transport)分离
  • 包含了基础的错误捕获逻辑

但存在两处可优化点:

  • await与.then()混用,建议统一风格,比如改成:
    try {
      const result = await email.send();
      console.log(result);
    } catch (err) {
      console.error(err);
    }
    
  • from字段为空,必须填写合法的发件人邮箱地址,否则易被邮件服务商判定为无效邮件

针对Gmail接收问题的解决方案

谷歌对第三方发件服务的反垃圾规则较严格,即使无报错,邮件也可能被拦截或归入垃圾箱,可尝试以下操作:

  • 配置SPF/DKIM/DMARC记录:在域名管理后台添加对应DNS记录,验证发件服务器合法性,这是让Gmail正常接收邮件的核心操作
  • 优化邮件内容:避免使用疑似垃圾邮件的关键词,保证text和html内容匹配,批量发送时添加清晰的退订链接
  • 检查发件IP信誉:确认托管服务器IP未被列入垃圾邮件黑名单
  • 调整传输配置:尝试将端口改为587,同时关闭ssl开启tls(587端口通常使用STARTTLS加密),示例配置:
    transport: {
      host: "",
      port: 587,
      ssl: false,
      tls: {
        rejectUnauthorized: false // 服务器证书存在问题时可临时开启,不推荐长期使用
      },
      auth: {
        user: "",
        pass: "",
      },
    }
    

内容的提问来源于stack exchange,提问作者Ariel Xavier Garcia-Duarte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:45:10