Here’s an example code in C# to extract attachments from Outlook using the Microsoft Graph API
using Microsoft.Graph; using Microsoft.Graph.Auth; using Microsoft.Identity.Client; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; // Define the authentication settings for the Microsoft Graph API string clientId = "your_client_id_here"; string tenantId = "your_tenant_id_here"; string clientSecret = "your_client_secret_here"; string[] scopes = { "https://graph.microsoft.com/.default" }; IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder .Create(clientId) .WithTenantId(tenantId) .WithClientSecret(clientSecret) .Build(); ClientCredentialProvider authProvider = new ClientCredentialProvider(confidentialClientApplication, scopes); // Define the ID of the Outlook email to extract attachments from string messageId = "your_message_id_here"; // Create an instance of the GraphServiceClient class to interact with the Microsoft Graph API GraphServiceClient graphClient = new GraphServiceClient(authProvider); // Define a list to store the extracted attachments List<Attachment> attachments = new List<Attachment>(); // Use the GraphServiceClient to retrieve the email message with the specified ID, including its attachments Message message = await graphClient.Me.Messages[messageId].Request().Expand("attachments").GetAsync(); // Loop through each attachment in the email message foreach (Attachment attachment in message.Attachments) { // Check if the attachment is a file attachment if (attachment is FileAttachment fileAttachment) { // Download the file to a byte array byte[] fileContents = await graphClient.Me.Messages[messageId].Attachments[fileAttachment.Id].Content.Request().GetAsync(); // Define the path and filename to save the attachment to string attachmentPath = "C:\\attachments\\" + fileAttachment.Name; // Save the file to disk File.WriteAllBytes(attachmentPath, fileContents); // Add the attachment to the list of extracted attachments attachments.Add(fileAttachment); } } // Display the list of extracted attachments foreach (Attachment attachment in attachments) { Console.WriteLine("Attachment Name: " + attachment.Name); }
This code uses the Microsoft Graph API to retrieve the specified email message from Outlook, including its attachments. It then loops through each attachment and uses the Content.Request().GetAsync()
method to download the contents of the attachment as a byte array. The code then uses the File.WriteAllBytes()
method to save the attachment to disk, and adds the attachment to a list of extracted attachments. Finally, the code displays the list of extracted attachments using the Console.WriteLine()
method. Note that you will need to replace the placeholders in the code (e.g. your_client_id_here
, your_tenant_id_here
, your_client_secret_here
, and your_message_id_here
) with your own values.