Rebex Graph

.NET client library for MS Graph API (Exchange Online)

Download 30-day free trial Buy from $199
More .NET libraries

Back to feature list...

Easy-to-use API

A typical Graph session goes through the following steps:

Getting list of unread e-mails 

The following code searches for unread e-mail messages and shows information about them:

// create Graph client instance
using (var client = new Rebex.Net.GraphClient())
{
    // connect to Exchange Online (Microsoft 365) server
    client.Connect();

    // authenticate with your OAuth access token
    client.Login(token);

    // get first page of a list of unread messages from the 'Inbox' folder
    var unread = GraphMessageSearchParameter.IsRead(false);
    GraphMessageCollection messages = client.Search(GraphFolderId.Inbox, unread);

    // print some info
    foreach (GraphMessageInfo info in messages)
    {
        Console.WriteLine("Subject: {0}", info.Subject);
        Console.WriteLine("From: {0}", info.From);
        Console.WriteLine("To: {0}", info.To);
    }

    // disconnect (not required, but polite)
    client.Disconnect();
}

Note: This code returns the first page of the results. See Paging results for more information about paging.

Downloading e-mails 

To download and parse a whole e-mail message into the memory-based MailMessage object, use GetMailMessage() method:

// create Graph client instance
using (var client = new Rebex.Net.GraphClient())
{
    // connect to Exchange Online (Microsoft 365) server
    client.Connect();

    // authenticate with your OAuth access token
    client.Login(token);

    // get first page of the message list of the 'Inbox' folder
    GraphMessageCollection messages = client.GetMessageList(GraphFolderId.Inbox);

    // print some info
    Console.WriteLine("{0} message(s) found.", messages.Count);

    // download those messages
    foreach (GraphMessageInfo info in messages)
    {
        MailMessage mail = client.GetMailMessage(info.Id);

        // do something with the mail
        // ...
    }

    // disconnect (not required, but polite)
    client.Disconnect();
}

Sending e-mails 

Sending an e-mail message is as simple as creating a MailMessage object and sending it using SendMessage method:

// create Graph client instance
using (var client = new Rebex.Net.GraphClient())
{
    // connect to Exchange Online (Microsoft 365) server
    client.Connect();

    // authenticate with your OAuth access token
    client.Login(token);

    // prepare e-mail
    MailMessage mail = new MailMessage();
    mail.To = "bob@example.org";
    mail.Subject = "Sent using Rebex Graph";
    mail.BodyText = "Hello World!";

    // send e-mail
    client.SendMessage(mail);

    // disconnect (not required, but polite)
    client.Disconnect();
}

Tip: The 'From' field does not have to be filled by the client - it's supplied by the server based on the session's account.

Back to feature list...