msgraph-email-reader

1.0.1 • Public • Published

Here’s a README.md file for your msgraph-email-reader package, explaining how to use it:


msgraph-email-reader

A lightweight TypeScript library for reading emails using Microsoft Graph API. This package supports fetching and managing access tokens and provides an easy-to-use method for retrieving emails from a user's mailbox.


Features

  • Fetch an access token from Microsoft Identity Platform.
  • Use the access token to retrieve emails from a user's mailbox via Microsoft Graph API.
  • Designed for integration with Node.js or Cypress for end-to-end testing.

Installation

Install the package via npm:

npm install msgraph-email-reader

Prerequisites

  1. Microsoft Azure AD App Registration

    • Register an application in Azure AD.
    • Obtain the following credentials:
      • Client ID
      • Client Secret
      • Tenant ID
    • Grant the application the Mail.Read permission.
  2. Node.js
    Ensure Node.js version 14.17 or higher is installed.


Usage

1. Import the Package

Import the library into your Node.js or Cypress project:

import {
  fetchAndSetAccessToken,
  setAccessToken,
  readEmails,
} from "msgraph-email-reader";

2. Fetch and Set Access Token

Retrieve and set the access token using your Azure AD credentials:

await fetchAndSetAccessToken(clientId, clientSecret, tenantId);

3. Read Emails

Fetch emails for a specific user based on search criteria:

const emails = await readEmails(emailID, searchText);
console.log("Fetched Emails:", emails);

Examples

Basic Example

import { fetchAndSetAccessToken, readEmails } from "msgraph-email-reader";

const clientId = "your-client-id";
const clientSecret = "your-client-secret";
const tenantId = "your-tenant-id";
const emailID = "user@example.com";
const searchText = "invoice";

(async () => {
  try {
    // Fetch and set access token
    await fetchAndSetAccessToken(clientId, clientSecret, tenantId);

    // Read emails
    const emails = await readEmails(emailID, searchText);
    console.log("Emails:", emails);
  } catch (error) {
    console.error("Error:", error.message);
  }
})();

Cypress Integration

  1. Add the following commands in cypress/support/commands.ts:
import { fetchAndSetAccessToken, readEmails } from "msgraph-email-reader";

Cypress.Commands.add("setAccessToken", () => {
  const clientId = Cypress.env("CLIENT_ID");
  const clientSecret = Cypress.env("CLIENT_SECRET");
  const tenantId = Cypress.env("TENANT_ID");

  return fetchAndSetAccessToken(clientId, clientSecret, tenantId);
});

Cypress.Commands.add("readEmails", (emailID: string, searchText: string) => {
  return readEmails(emailID, searchText);
});
  1. Use the custom commands in your test:
describe("Microsoft Graph API - Read Emails", () => {
  before(() => {
    cy.setAccessToken();
  });

  it("should fetch emails for a user", () => {
    const emailID = "user@example.com";
    const searchText = "invoice";

    cy.readEmails(emailID, searchText).then((emails) => {
      expect(emails).to.be.an("array").and.have.length.greaterThan(0);
      cy.log("Fetched Emails:", emails);
    });
  });
});

API Reference

fetchAndSetAccessToken(clientId: string, clientSecret: string, tenantId: string): Promise<string>

Fetches and sets the access token. Must be called before fetching emails.

  • Parameters:
    • clientId: Azure AD application (client) ID.
    • clientSecret: Client secret for the Azure AD application.
    • tenantId: Azure AD tenant ID.

setAccessToken(token: string): void

Sets the access token for reuse.

  • Parameters:
    • token: Access token.

readEmails(emailID: string, searchText: string): Promise<any[]>

Fetches emails for a user based on search criteria.

  • Parameters:
    • emailID: Email ID of the user.
    • searchText: Search query for filtering emails.

Dependencies

  • axios: HTTP client for making API requests.

Development

Scripts

  • Build: Compile TypeScript files to JavaScript.

    npm run build
  • Test: Run tests using your preferred framework (e.g., Cypress).


License

This project is licensed under the ISC License.


Let me know if you need further adjustments!

Dependencies (1)

Dev Dependencies (2)

Package Sidebar

Install

npm i msgraph-email-reader

Weekly Downloads

3

Version

1.0.1

License

ISC

Unpacked Size

12.3 kB

Total Files

6

Last publish

Collaborators

  • naveenkanak2023