You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Nodemailer出现config smtp error,如何正确配置其SMTP功能?

解决Nodemailer的SMTP配置错误问题

作为经常帮开发者排查Nodemailer问题的人,config smtp error这个错误我见得太多了——大多是配置参数不对或者邮箱权限没设置到位。下面给你详细讲正确的配置方法和排错技巧:

一、SMTP配置的核心要素

不管用哪个邮箱服务商,Nodemailer的SMTP配置都需要这几个关键参数,少一个都可能出错:

  • host: 对应邮箱的SMTP服务器地址(比如Gmail是smtp.gmail.com
  • port: 端口号,常用的是465(SSL加密)或587(TLS加密)
  • secure: 布尔值,用465端口时设为true,587端口设为false
  • auth: 包含user(你的邮箱地址)和pass注意:这里是邮箱的SMTP授权码,不是普通登录密码!

先给你一个通用的基础配置示例:

const nodemailer = require('nodemailer');

// 创建SMTP传输实例
let transporter = nodemailer.createTransport({
  host: 'smtp.example.com', // 替换成你的邮箱SMTP地址
  port: 465,
  secure: true, // 465端口用true,587端口用false
  auth: {
    user: 'your-email@example.com', // 你的邮箱账号
    pass: 'your-smtp-authorization-code' // 邮箱的SMTP授权码
  }
});

// 测试发送邮件的函数
async function sendTestEmail() {
  try {
    let sendResult = await transporter.sendMail({
      from: '"你的名字" <your-email@example.com>', // 发件人(昵称+邮箱)
      to: 'recipient@example.com', // 收件人邮箱,多个用逗号分隔
      subject: 'Nodemailer测试邮件', // 邮件主题
      text: '这是一封来自Nodemailer的纯文本测试邮件!', // 纯文本内容
      html: '<b>这是一封来自Nodemailer的HTML测试邮件!</b>' // HTML格式内容
    });
    console.log('邮件发送成功,消息ID:', sendResult.messageId);
  } catch (err) {
    console.error('邮件发送失败:', err);
  }
}

// 执行测试
sendTestEmail();

二、主流邮箱的SMTP配置示例

不同邮箱服务商的SMTP参数略有不同,给你整理了几个常用的:

Gmail

  • 开启SMTP需要先在Google账号设置里启用“不太安全的应用访问”(如果开启了两步验证,必须用App Password,而不是授权码)
let transporter = nodemailer.createTransport({
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: 'your-gmail-account@gmail.com',
    pass: 'your-app-password-or-authorization-code'
  }
});

Outlook/Hotmail

  • 注意如果开启了两步验证,同样需要用App Password登录
let transporter = nodemailer.createTransport({
  host: 'smtp.office365.com',
  port: 587,
  secure: false,
  auth: {
    user: 'your-outlook-account@outlook.com',
    pass: 'your-password-or-app-password'
  },
  tls: {
    ciphers: 'SSLv3' // 部分环境下需要这个配置来兼容
  }
});

QQ邮箱

  • 必须先在QQ邮箱的「设置-账户」里开启POP3/SMTP服务,然后生成专门的SMTP授权码
let transporter = nodemailer.createTransport({
  host: 'smtp.qq.com',
  port: 465,
  secure: true,
  auth: {
    user: 'your-qq-account@qq.com',
    pass: 'your-qq-smtp-authorization-code'
  }
});

三、常见排错技巧

如果还是遇到config smtp error,按下面的步骤排查:

  • 优先检查授权码:90%的错误都是因为用了普通登录密码而不是SMTP授权码,去邮箱设置里确认POP3/SMTP服务已开启并生成了正确的授权码。
  • 端口与secure参数匹配:587端口必须对应secure: false(会自动启用TLS),465端口对应secure: true(SSL加密),不匹配会直接报错。
  • 网络与防火墙限制:有些服务器会屏蔽465/587端口,检查服务器是否允许访问对应邮箱的SMTP地址和端口。
  • 邮箱服务商限制:比如Gmail发送频率过高会被临时限制,或者你的邮箱被标记为垃圾邮件发送者,去邮箱后台查看是否有异常提醒。
  • 代码拼写错误:检查是否把host写成hostnameauth里的user写成username这类低级错误。

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

火山引擎 最新活动