GetEWSFolder

Get emails from multiple folders of an account all at once.

python · Microsoft Exchange Online

Source

from CommonServerPython import *


def convert_mail_to_json(item, folder):
    return {
        "subject": item.get("subject", ""),
        "textBody": item.get("textBody", ""),
        "body": item.get("body", ""),
        "folder": folder,
    }


def main():
    folders_paths_str = demisto.args()["foldersPaths"]
    folders_paths_list = [folder.strip() for folder in folders_paths_str.split(",")]
    path_to_mails = {folder: [] for folder in folders_paths_list}  # type: Dict[str, List[str]]
    for folder in folders_paths_list:
        res = demisto.executeCommand(
            "ews-get-items-from-folder",
            {
                "folder-path": folder,
                "limit": demisto.args().get("limit"),
                "target-mailbox": demisto.args().get("targetMailbox"),
                "is-public": "False" if demisto.args().get("isPublic") == "false" else "True",
            },
        )
        if is_error(res):
            return_error(get_error(res))

        items = res[0]["Contents"]
        if isinstance(items, str) and items == "There is no output results":
            mails_at_folder = []
        else:
            mails_at_folder = [convert_mail_to_json(i, folder) for i in items]
        path_to_mails[folder] = mails_at_folder
    mails_from_all_folders_list = [mail_json for folder_mails in path_to_mails.values() for mail_json in folder_mails]
    return fileResult("all_mails.json", json.dumps(mails_from_all_folders_list))


if __name__ == "__builtin__" or __name__ == "builtins":
    entry = main()
    demisto.results(entry)

README

Get emails from multiple folders of an account all at once.

Script Data


Name Description
Script Type python
Tags ml

Inputs


Argument Name Description
foldersPaths A comma-separated list of the EWS folders paths.
targetMailbox The target mailbox.
isPublic Is the folder public?
limit Maximum number of items per folder.
hashSeed Use this hash seed.