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

使用ews-javascript-api连接Exchange Server遇401错误求排查

使用ews-javascript-api连接Exchange Server的认证问题排查请求

问题概述

我通过NodeJS结合ews-javascript-api连接Microsoft Exchange Server时遇到认证异常:

  • 凭证在微软连接测试站验证有效,但代码使用cookieAuthXhrApi时返回401 Unauthorized错误
  • 切换为ntlmAuthXhrApi时,出现**"Invalid message signature: Negotiate"**错误

代码示例

var ews = require('ews-javascript-api');
var ewsAuth = require("ews-javascript-api-auth");

async send(params) {
  const { subject, html } = params;

  let { to } = params;

  if (process.env.APP_ENV === "development") {
    to = process.env.MAIL_TO_DEV;
  }

  const sendMail = async (to, subject, html) => {
    ews.ConfigurationApi.ConfigureXHR(new ewsAuth.cookieAuthXhrApi(`${process.env.MAIL_USERNAME}`, process.env.MAIL_PASSWORD));
    const ewsConnection = new ews.ExchangeService(ews.ExchangeVersion.Exchange2010);
   
    ewsConnection.Credentials = new ews.ExchangeCredentials(`${process.env.MAIL_USERNAME}`, process.env.MAIL_PASSWORD);
    ewsConnection.Url = new ews.Uri(`${process.env.MAIL_HOST}`);

    const emailMessage = new ews.EmailMessage(ewsConnection);
    emailMessage.Subject = subject;
    emailMessage.Body = new ews.MessageBody(ews.BodyType.HTML, html);

    emailMessage.ToRecipients.Add(to);

    try {
      await emailMessage.Send();
      console.log('Email sent successfully.');
    } catch (error) {
      console.log('Email error:', error);
    }
  };

  sendMail(to, subject, html)
  .catch((error) => console.log('Email error:', error));
   
  return {};
}

错误信息

使用cookieAuthXhrApi时的错误

SoapFaultDetails {
  message: '401 Unauthorized',
  InnerException: null,
  faultCode: null,
  faultString: null,
  faultActor: null,
  responseCode: 127,
  errorCode: 0,
  exceptionType: null,
  lineNumber: 0,
  positionWithinLine: 0,
  errorDetails: DictionaryWithStringKey {
    keys: [],
    keysToObjs: {},
    objects: {},
    keyPicker: [Function (anonymous)]
  },
  HttpStatusCode: 401,
  Exception: ServiceRequestUnauthorizedException {
    message: '401 Unauthorized',
    InnerException: null
  }
}

使用ntlmAuthXhrApi时的错误

SoapFaultDetails {
  message: 'Invalid message signature: Negotiate',
  InnerException: null,
  faultCode: null,
  faultString: null,
  faultActor: null,
  responseCode: 127,
  errorCode: 0,
  exceptionType: null,
  lineNumber: 0,
  positionWithinLine: 0,
  errorDetails: DictionaryWithStringKey {
    keys: [],
    keysToObjs: {},
    objects: {},
    keyPicker: [Function (anonymous)]
  },
  HttpStatusCode: undefined
}

.env配置示例

MAIL_HOST="https://xxx.xxx.com.br/EWS/Exchange.asmx"
MAIL_PORT=25
MAIL_USERNAME="xxxxxxxxx"
MAIL_PASSWORD="xxxx2023"
MAIL_FROM="xxxx@xxxx.com.br"
MAIL_TO_DEV="xxxxx@xxxxx.com.br"

需求

想了解是否有适用于JavaScript的Exchange Server专用SDK,或请求提供可正常运行的JavaScript集成代码示例。

内容的提问来源于stack exchange,提问作者Batista Tomé Oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:40