使用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
相关产品推荐
相关产品推荐

