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

测试环境下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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:57:11