Skip to main content

Using an HTTP Call to Set Outlook Email Status

You can use an HTTP call to set Outlook emails to “unread” or ”read” status. An example of where you might find this functionality useful is in the case of a mailbox attached to a project where there is a steady accumulation of email and you need to keep the unread queue clear. Being able to set unread mails as read will meet this need.

This ability was added in the 4.10.0 release of AIQ.

Process

In your main script, call markAsReadOrUnread(), with these parameters:

    emailId = id of the email to update the read status.

    isRead = true if the user wants to mark the email as read, otherwise should be false to mark it as unread.

    mailSender = active user

    folder = working folder where is the email.In your main script, call for markAsReadOrUnread(), parameters

    Example Script

    //get token
    function generateToken(clientId, clientSecret, tenantId) {
    var data = formData();
    data.put("grant_type", "client_credentials");
    data.put("scope", "https://graph.microsoft.com/.default");
    data.put("client_id", clientId);
    data.put("client_secret", clientSecret);
    var tokenResponse = post("https://login.microsoftonline.com/" + tenantId + "/oauth2/v2.0/token", data);
    var tokenJson = JSON.parse(tokenResponse.toStringContent());
    return tokenJson.access_token;
    }
    //send email
    function sendMessage(token, mailSender, destination, subject, message) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/sendMail"
    var body = {
    "message": {
    "subject": subject,
    "body": {
    "contentType": "Text",
    "content": message
    },
    "toRecipients": [
    {
    "emailAddress": {
    "address": destination
    }
    }
    ]
    },
    "saveToSentItems": "false"
    };
    var request = createPost(url, body);
    request.addHeader("Authorization", "Bearer " + token);
    process(request);
    }
    //reply email
    function replyMessage(token, emailId, mailSender, destination, message) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/messages/" + emailId + "/reply"
    var body = {
    "message": {
    "toRecipients": [
    {
    "emailAddress": {
    "address": destination
    }
    }
    ]
    },
    "comment": message
    };
    var request = createPost(url, body);
    request.addHeader("Authorization", "Bearer " + token);
    process(request);
    }
    //reply all email
    function replyAllMessage(token, emailId, mailSender, message) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/messages/" + emailId + "/replyAll"
    var body = {
    "comment": message
    };
    var request = createPost(url, body);
    request.addHeader("Authorization", "Bearer " + token);
    process(request);
    }
    //get emails
    function getAllMessages(token, mailSender, folder) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/mailFolders/" + folder + "/messages/";
    var request = createGet(url);
    request.addHeader("Authorization", "Bearer " + token);
    request.addHeader("Content-type", "application/json");
    request.addHeader("Prefer", "outlook.body-content-type='text'");
    return process(request).toStringContent();
    }
    //get mail folders
    function getAllFolders(token, mailSender) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/mailFolders";
    var request = createGet(url);
    request.addHeader("Authorization", "Bearer " + token);
    request.addHeader("Content-type", "application/json");
    return process(request).toStringContent();
    }
    //delete mail
    function deleteMessage(token, folder, emailId) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/mailFolders/" + folder + "/messages/" + emailId;
    var request = createDelete(url);
    request.addHeader("Authorization", "Bearer " + token);
    request.addHeader("Content-type", "application/json");
    return process(request).toStringContent();
    }
    //get unread emails
    function getUnreadMessages(token, mailSender, folder) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/mailFolders/" + folder + "/messages/?$filter=isRead+ne+true";
    var request = createGet(url);
    request.addHeader("Authorization", "Bearer " + token);
    request.addHeader("Content-type", "application/json");
    request.addHeader("Prefer", "outlook.body-content-type='text'");
    return process(request).toStringContent();
    }
    //mark email as read or unread
    function markAsReadOrUnread(emailId, isRead, mailSender, folder) {
    var url = "https://graph.microsoft.com/v1.0/users/" + mailSender + "/mailFolders/" + folder + "/messages/" + emailId;
    var body = { isRead: isRead };
    var request = createPatch(url, body);
    request.addHeader("Authorization", "Bearer " + token);
    //request.addHeader("Content-type", "application/json");
    //request.addHeader("Content-length", "248");
    process(request);
    }

    Last updated: August 15, 2023

    If you have any feedback on this topic, please contact us at documentation@appvance.ai