You need to enable JavaScript to run this app. Glitch项目Nodemailer提示邮件发送成功却未收到问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Glitch项目Nodemailer提示邮件发送成功却未收到问题咨询

问题根因

你当前使用的ethereal.email是Nodemailer官方提供的仅用于测试的虚拟SMTP服务,所有通过该服务提交的邮件都不会真实投递到目标邮箱,只会保存在Ethereal的临时测试后台,仅能通过控制台打印的预览链接查看测试邮件内容,这就是控制台显示发送成功但你始终收不到邮件的核心原因。

修复方案

  • 替换为可实际投递的SMTP服务:可选择个人常用邮箱的SMTP服务(如QQ邮箱、网易邮箱等),或专业事务邮件服务,替换原有配置中的host、port、auth参数即可。
  • 适配对应SMTP服务的配置要求:多数个人邮箱需要先在账号设置中开启SMTP服务,且登录密码需使用服务商生成的专属授权码,而非账号原始密码;部分服务商还会要求配置SSL/TLS参数,你需要对应调整transporter配置中的secure、tls等字段。
  • 优化代码逻辑:你当前的代码同时使用了await和回调函数处理sendMail请求,属于冗余写法,建议统一使用其中一种方式处理异步逻辑,避免出现不可预期的异常。
  • 排查投递拦截问题:配置正确后如果仍未收到邮件,先检查目标邮箱的垃圾邮件、广告邮件文件夹,部分邮箱会默认拦截陌生发件地址的邮件。

以下是可用的配置示例(以QQ邮箱为例):

let account = {
  user: "你的QQ邮箱地址",
  pass: "QQ邮箱设置页生成的SMTP专属授权码"
}
let transporter = nodemailer.createTransport({
  host: "smtp.qq.com",
  port: 587,
  secure: false,
  auth: {
    user: account.user,
    pass: account.pass,
  },
});

let mailOptions = {
  from: `"Contact" <${account.user}>`,
  to: "实际接收邮件的目标邮箱地址",
  subject: "New Contact!",
  text: "Hello world",
  html: "<b>Hello world</b>",
}

// 选择一种异步处理方式即可,示例为回调写法
transporter.sendMail(mailOptions, (error, info) => {
  if(error) return console.log(error);
  console.log("Message sent: %s", info.messageId);  
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 07:54:09