使用Nodemailer发送Outlook邮件出现错误,请求技术协助
排查并解决Nodemailer发送Outlook邮件的错误
先梳理你代码里的问题,再一步步给出修正方案:
1. 先修复代码里的语法错误
你的代码有两处明显语法问题,这是导致运行报错的直接原因:
auth对象中user和pass属性之间缺少逗号,JavaScript对象的键值对必须用逗号分隔- 最后一行调用
sendMail时,变量名写错成mailOption(少了末尾的s),且代码未完成,缺少回调函数或Promise逻辑来处理发送结果
2. 调整Outlook SMTP配置细节
Outlook的SMTP服务有特定的配置要求,你的配置里有两处需要修正:
tls配置里的chipers是拼写错误,正确写法是ciphers- SSLv3是已被淘汰的不安全协议,Outlook SMTP要求使用TLS 1.2,必须修改加密协议版本
- 建议添加
requireTLS: true,强制启用TLS连接,避免明文传输风险
修正后的完整可运行代码
var nodemailer = require("nodemailer"); // 创建邮件传输器 var transporter = nodemailer.createTransport({ host: "smtp-mail.outlook.com", secureConnection: false, // 587端口不需要开启secureConnection port: 587, requireTLS: true, // 强制使用TLS加密 tls: { ciphers: 'TLSv1.2', // 匹配Outlook支持的加密版本 rejectUnauthorized: false // 部分环境下证书验证失败可临时开启,生产环境建议关闭 }, auth: { user: 'user@domain.com', // 修复逗号缺失问题 pass: '123456' } }); // 邮件内容配置 var mailOptions = { from: 'user@domain.com', to: 'user@domain.com', subject: 'Nodejs Mail', text: 'this is the email\'s body text...' }; // 发送邮件并处理结果 transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log('发送失败:', error); } else { console.log('邮件发送成功: ' + info.response); } });
额外排查要点
- 如果你的Outlook账号开启了两步验证,直接用登录密码会验证失败,需要去微软账号设置里生成并使用应用密码
- 部分企业版Outlook账号可能被管理员限制了第三方应用登录权限,需要联系管理员确认
- 如果仍然报错,打印完整的
error对象查看具体信息(比如认证失败、连接超时等),可以更精准地定位问题
内容的提问来源于stack exchange,提问作者KonRow
相关产品推荐
相关产品推荐

