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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:07:18