为了账号安全,请及时绑定邮箱和手机立即绑定

使用 EWS 托管 api Nodejs 实现从自定义文件夹中读取 MS-Exchange 电子邮件

使用 EWS 托管 api Nodejs 实现从自定义文件夹中读取 MS-Exchange 电子邮件

莫回无 2023-05-11 13:54:31
有没有办法使用 EWS 托管 api(NodeJs 实现)从 MS-Exchange 中的自定义文件夹中读取电子邮件?我可以从收件箱中读取,但我有自定义文件夹名称,电子邮件将移至该名称,我希望在这些文件夹中读取代码。我试过什么。const EWS = require('node-ews');const ewsConfig = {    username: '<Email>',    password: '<Password>',    host: '<Exchange URL>'};const ews = new EWS(ewsConfig);const ewsFunction = 'FindItem';var ewsArgs = {    'attributes': {        'Traversal': 'Shallow'    },    'ItemShape': {        't:BaseShape': 'IdOnly',        't:AdditionalProperties': {            't:FieldURI': {                'attributes': {                    'FieldURI': 'item:Subject'                }            }        }    },    'ParentFolderIds': {        'DistinguishedFolderId': {            'attributes': {                'Id': '<Some Custom Folder>'            }        }    }};(async function () {       try {        let result = await ews.run(ewsFunction, ewsArgs);        console.log(result);    } catch (err) {        console.log(err.message);    }})();    错误:a:ErrorInvalidRequest: The request is invalid.: {"ResponseCode":"ErrorInvalidRequest","Message":"The request is invalid."}
查看完整描述

2 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

DistinguishedFolderId 不适用于非默认文件夹,因此我建议您尝试


    'ParentFolderIds': {

        'FolderId': {

            'attributes': {

                'Id': '<Some Custom Folder>'

            }

        }

    }


查看完整回答
反对 回复 2023-05-11
?
潇湘沐

TA贡献1816条经验 获得超6个赞

我让它工作的方法是首先找到FolderId使用FindFolder调用的方法:


const ewsArgs = {

  FolderShape: {

    BaseShape: 'AllProperties',

  },

  ParentFolderIds: {

    DistinguishedFolderId: {

      attributes: {

        Id: 'inbox',

      },

      Mailbox: {

        EmailAddress: 'emailaddress@company.com',

      },

    },

  },

};


const { ResponseMessages } = await ews.run('FindFolder', ewsArgs, ews.ewsSoapHeader);


const found = ResponseMessages.FindFolderResponseMessage.RootFolder.Folders.Folder

  .find(f => f.DisplayName.match(new RegExp(folderName.toLowerCase(), 'ig')));

之后,您可以使用它来查找文件夹中包含以下呼叫的所有电子邮件FindItem:


const ewsArgs = {

  attributes: {

    Traversal: 'Shallow',

  },

  ItemShape: {

    BaseShape: 'IdOnly',

    // BaseShape: 'AllProperties',

  },

  ParentFolderIds: {

    FolderId: found.FolderId,

  },

};


const { ResponseMessages } = await ews.run('FindItem', ewsArgs, ews.ewsSoapHeader);


查看完整回答
反对 回复 2023-05-11
  • 2 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信