Nodemailer邮件发送返回200成功但未收到邮件求助
Nodemailer发送成功但收不到邮件的排查与修复
针对你遇到的Nodemailer返回200成功状态、无报错但收不到邮件的问题,结合代码细节,以下是关键排查点和修复方案:
1. 修正Gmail认证配置
代码中auth部分的user和pass为占位符,必须替换为实际有效信息:
user填你的Gmail邮箱地址(如darciangn@gmail.com);pass不能用Gmail登录密码,需使用Google应用专用密码(开启2FA后在账号设置中生成),未开2FA可临时启用"不太安全的应用访问"(不推荐长期使用)。
修改后示例:
auth:{ user:'darciangn@gmail.com', pass:'你的应用专用密码', }
2. 规范from字段格式
当前from仅设置名称Darcia⚜️不符合SMTP协议要求,会被邮件服务器判定为无效发件人,导致邮件被拦截。需补充邮箱地址:
from: `Darcia⚜️ <darciangn@gmail.com>`,
3. 删除错误的name配置
createTransport中的name参数是SMTP服务器的主机标识,不是你的邮箱地址,该错误配置可能导致SMTP握手异常。直接移除name: 'darciangn@gmail.com'这一行。
4. 优化异步发送逻辑
当前回调式的sendMail无法完整捕获异步错误,建议改用Promise风格,确保错误能被正确抛出:
const Email = async (options) => { let transporter = nodemailer.createTransport({ service: "gmail", host: "smtp.gmail.com", port: 587, secure: false, auth:{ user:'darciangn@gmail.com', pass:'你的应用专用密码', } }) try { const info = await transporter.sendMail(options); console.log("Email sent: " + info.response); } catch (err) { console.log(err); throw err; } }; const EmailSender = async ({firstName, lastName, email, companyName, typeOfDeveloper, recruitmentType}) => { const options = { // ... 原有配置 ... from: `Darcia⚜️ <darciangn@gmail.com>`, // ... 原有HTML内容 ... }; await Email(options); }
5. 额外排查点
- 检查目标邮箱的垃圾邮件/垃圾箱,邮件大概率被误判为垃圾邮件;
- 确认Gmail账号未触发发送限制(短时间内发送过多邮件会被临时限制);
- 换用其他邮箱服务(如Outlook、QQ邮箱)测试,排除Gmail的特定规则限制。
内容的提问来源于stack exchange,提问作者Ahmed Iyanuoluwa
相关产品推荐
相关产品推荐

