测试环境下Nodemailer无法发送邮件,使用MailTrap报错
解决MailTrap调用sendMail()始终报错的问题
发件人邮箱格式错误
你代码里的发件人邮箱是marim.khaled99@gmail.gom,域名后缀拼写错误(gom应为com),这会触发邮件格式校验失败,直接修改为正确格式:from: "marim <marim.khaled99@gmail.com>",补充587端口的TLS配置
MailTrap的587端口需要通过STARTTLS启用加密连接,在transporter配置中添加requireTLS: true,确保连接正常升级:const transporter = nodemailer.createTransport({ host: "sandbox.smtp.mailtrap.io", port: 587, requireTLS: true, // 新增该行配置 auth: { user: process.env.EMAIL_USERNAME, pass: process.env.EMAIL_PASSWORD, }, });验证环境变量凭据正确性
确认process.env.EMAIL_USERNAME和process.env.EMAIL_PASSWORD是MailTrap控制台提供的测试专用凭据,而非个人邮箱账号。可以临时替换为硬编码的测试值,排查是否是环境变量加载问题:auth: { user: "你的MailTrap用户名", pass: "你的MailTrap密码", },添加错误捕获定位具体问题
当前代码缺少错误处理逻辑,无法获取具体报错原因。给函数添加try-catch并打印错误信息,方便精准排查:const sendEmail = async (options) => { try { const transporter = nodemailer.createTransport({ host: "sandbox.smtp.mailtrap.io", port: 587, requireTLS: true, auth: { user: process.env.EMAIL_USERNAME, pass: process.env.EMAIL_PASSWORD, }, }); const mailOptions = { from: "marim <marim.khaled99@gmail.com>", to: options.email, subject: options.subject, text: options.message, }; await transporter.sendMail(mailOptions); console.log("邮件发送成功"); } catch (error) { console.error("邮件发送失败详情:", error.message); throw error; } };
内容的提问来源于stack exchange,提问作者lila
相关产品推荐
相关产品推荐

