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

使用SMTPJS与Elastic Mail在Node.js应用中发送邮件返回OK但未收到邮件的问题排查

排查SMTP.js返回OK但未收到邮件的问题

我之前也碰到过一模一样的情况,返回OK但收不到邮件,大概率是这几个环节没处理到位,咱们一步步来排查:

1. 确认SecureToken的有效性与匹配性

SMTP.js的SecureToken是绑定了发件邮箱SMTP配置的专用凭证,你需要确保:

  • 生成Token时填写的发件邮箱,和代码里的From: "info@example.com"完全一致
  • 生成Token时的SMTP服务器地址、端口、账号密码(或应用密码)全部正确
    如果Token和代码里的发件邮箱不匹配,或者SMTP配置有误,就算接口返回OK,邮件也根本发不出去。

2. 检查发件邮箱的权限设置

绝大多数邮箱服务商都有严格的安全限制,必须完成以下配置:

  • 开启发件邮箱的SMTP服务(一般在邮箱的设置面板中能找到入口)
  • 如果是Gmail这类启用两步验证的邮箱,不能直接用登录密码生成Token,得先在账号安全页生成专用应用密码,再用这个密码去创建SecureToken
  • 部分旧版邮箱可能需要临时开启“低安全性应用访问”(不过现在多数服务商已取消该选项,优先用应用密码)
    没开这些权限的话,邮件会被服务商直接拦截,自然收不到。

3. 排查收件邮箱的垃圾邮件文件夹

别着急找代码问题,先去mymail@gmail.com的垃圾箱、广告邮件、已归档文件夹里看看!很多时候邮件确实发出去了,但被反垃圾系统判定为垃圾邮件,直接放到垃圾箱里了。

4. 优化邮件内容,避免被反垃圾系统拦截

你的邮件内容过于简洁且是纯文本,很容易被反垃圾系统标记。可以试试:

  • 给Body添加简单的HTML格式,比如:
    Body: `<p>Hello there,</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>`
    
  • 增加邮件内容的丰富度,避免过于简短的内容,减少敏感词

5. 完善代码的错误捕获与调试

你现在的代码只处理了成功回调,没捕获错误,建议加上catch块,同时打印完整响应,看看有没有隐藏的错误信息:

function sendEmail(){
  console.log(Email);
  Email.send({
    SecureToken:'#########',
    To: `mymail@gmail.com`,
    From: "info@example.com",
    Subject: "Hello world",
    Body: `<p>Lorem ipsum dolor sit amet</p>`
  }).then(response => {
    console.log("Full response details:", response); // 打印完整响应
    alert(response);
  }).catch(error => {
    console.error("Email sending failed:", error); // 捕获并打印错误
  });
}

额外建议:生产环境建议后端发送邮件

在前端直接用SMTP.js发送邮件有安全风险——SecureToken会暴露在浏览器控制台里,可能被恶意获取。如果是生产环境的Node.js应用,建议把邮件发送逻辑放到后端,用nodemailer这类专业的邮件库,既能保证安全,调试也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:18:12