Search code examples
c#outlook-calendar

Create an appointment in outlook calendar with C#


I want to create an appointment in outlook calendar.I already made some code in which allows you to set your own appointments but is not working as it should

var pcaOptions = new PublicClientApplicationOptions
      {
          ClientId = "xxxxxx",
          TenantId = "xxxxxx"
      };

 var pca = PublicClientApplicationBuilder.CreateWithApplicationOptions(pcaOptions).Build();
 var ewsScopes = new string[] { "https://outlook.office.com/EWS.AccessAsUser.All" };     

   // Make the interactive token request
var authResult = await pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync();

    // Configure the ExchangeService with the access token
var ewsClient = new ExchangeService();
    ewsClient.Url = new Uri("https://mail.domain.com/EWS/Exchange.asmx");
    ewsClient.Credentials = new OAuthCredentials(authResult.AccessToken);

Appointment appointment = new Appointment(ewsClient);
// Set the properties on the appointment object to create the appointment.
appointment.Subject = "Tennis lesson";
appointment.Body = "Focus on backhand this week.";
appointment.Start = DateTime.Now.AddDays(2);
appointment.End = appointment.Start.AddHours(1);
appointment.Location = "Tennis club";
appointment.ReminderDueBy = DateTime.Now;

// Save the appointment to your calendar.
appointment.Save(SendInvitationsMode.SendToNone);

// Verify that the appointment was created by using the appointment's item ID.
Item item = Item.Bind(ewsClient, appointment.Id, new PropertySet(ItemSchema.Subject));

exception:The request failed. Unable to connect to the remote server

Is there any solution to solve it?

Thank you


Solution

  • After so much finding Finally i am get answer.

                    string ewsUrl = "https://outlook.office365.com/EWS/Exchange.asmx";
                    string userName = "outlookUsername";
                    string password =  "outlookpasword";
    
                    ExchangeService servicex = new ExchangeService();
                    servicex.Url = new Uri(ewsUrl);
                    servicex.UseDefaultCredentials = true;
                    servicex.Credentials = new WebCredentials(userName, password);
    
                    try
                    {
                        Appointment appointment = new Appointment(servicex);
                        // Set the properties on the appointment object to create the appointment.
                        appointment.Subject = "Tennis lesson";
                        appointment.Body = "Focus on backhand this week.";
                        appointment.Start = DateTime.Now.AddDays(2);
                        appointment.End = appointment.Start.AddHours(1);
                        appointment.Location = "Tennis club";
                        appointment.ReminderDueBy = DateTime.Now;
    
    
                        // Save the appointment to your calendar.
                        appointment.Save(SendInvitationsMode.SendToNone);
    
                        // Verify that the appointment was created by using the appointment's item ID.
                        Item item = Item.Bind(servicex, appointment.Id, new PropertySet(ItemSchema.Subject));
    
                        MessageBox.Show("Sucessfully Event Created");
    
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
    

    above code use sucessfully event create in Outlook. Thank you.