使用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端口设为falseauth: 包含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写成hostname,auth里的user写成username这类低级错误。
内容的提问来源于stack exchange,提问作者Fikri Khoir




