public ActionResult PlayWithMail(PlayWithMailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            AntiForgery.Validate();

            var folders = MailHelper.ListFolders();

            // Here you can use whatever mailbox name that you like, instead of Inbox
            var messages = MailHelper.ListMessages(folders.FirstOrDefault(f => f.Name == "Posta in arrivo" || f.Name == "Inbox").Id);

            if (messages != null && messages.Count > 0)
            {
                var message = MailHelper.GetMessage(messages[0].Id, true);

                foreach (var attachment in message.Attachments)
                {
                    // Download content only for attachments smaller than 100K
                    if (attachment.Size < 100 * 1024)
                    {
                        attachment.EnsureContent();
                    }
                }
            }

            MailHelper.SendMessage(new Models.MailMessageToSend
            {
                Message = new Models.MailMessage
                {
                    Subject = "Test message",
                    Body    = new Models.ItemBody
                    {
                        Content = "<html><body><h1>Hello from ASP.NET MVC calling Microsoft Graph API!</h1></body></html>",
                        Type    = Models.BodyType.Html,
                    },
                    To = new List <Models.UserInfoContainer>(
                        new Models.UserInfoContainer[] {
                        new Models.UserInfoContainer
                        {
                            Recipient = new Models.UserInfo
                            {
                                Name    = model.MailSendToDescription,
                                Address = model.MailSendTo,
                            }
                        }
                    }),
                },
                SaveToSentItems = true,
            });

            if (messages != null && messages.Count > 0)
            {
                MailHelper.Reply(messages[0].Id, "This a direct reply!");
                MailHelper.ReplyAll(messages[0].Id, "This a reply all!");
                MailHelper.Forward(messages[0].Id,
                                   new List <Models.UserInfoContainer>(
                                       new Models.UserInfoContainer[]
                {
                    new Models.UserInfoContainer
                    {
                        Recipient = new Models.UserInfo
                        {
                            Name    = model.MailSendToDescription,
                            Address = model.MailSendTo,
                        }
                    },
                    new Models.UserInfoContainer
                    {
                        Recipient = new Models.UserInfo
                        {
                            Address = "*****@*****.**",
                            Name    = "Someone Else",
                        }
                    },
                }),
                                   "Hey! Look at this!");
            }

            return(View("Index"));
        }
        public ActionResult PlayWithCalendars(PlayWithMailViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", model));
            }

            AntiForgery.Validate();

            var calendars          = CalendarHelper.ListCalendars();
            var calendar           = CalendarHelper.GetCalendar(calendars[0].Id);
            var events             = CalendarHelper.ListEvents(calendar.Id, 0);
            var eventsCalendarView = CalendarHelper.ListEvents(calendar.Id, DateTime.Now, DateTime.Now.AddDays(10), 0);

            if (events[0].ResponseStatus != null && events[0].ResponseStatus.Response == Models.ResponseType.NotResponded)
            {
                CalendarHelper.SendFeedbackForMeetingRequest(
                    calendar.Id, events[0].Id, MeetingRequestFeedback.Accept,
                    "I'm looking forward to meet you!");
            }

            var singleEvent = CalendarHelper.CreateEvent(calendars[0].Id,
                                                         new Models.Event
            {
                Attendees = new List <Models.UserInfoContainer>(
                    new Models.UserInfoContainer[]
                {
                    new Models.UserInfoContainer
                    {
                        Recipient = new Models.UserInfo
                        {
                            Name    = model.MailSendToDescription,
                            Address = model.MailSendTo,
                        }
                    },
                    new Models.UserInfoContainer
                    {
                        Recipient = new Models.UserInfo
                        {
                            Address = "*****@*****.**",
                            Name    = "Someone Else",
                        }
                    },
                }),
                Start = new Models.TimeInfo
                {
                    DateTime = DateTime.Now.AddDays(2).ToUniversalTime(),
                    TimeZone = "UTC"
                },
                OriginalStartTimeZone = "UTC",
                End = new Models.TimeInfo
                {
                    DateTime = DateTime.Now.AddDays(2).AddHours(1).ToUniversalTime(),
                    TimeZone = "UTC"
                },
                OriginalEndTimeZone = "UTC",
                Importance          = Models.ItemImportance.High,
                Subject             = "Introducing the Microsoft Graph API",
                Body = new Models.ItemBody
                {
                    Content = "<html><body><h2>Let's talk about the Microsoft Graph API!</h2></body></html>",
                    Type    = Models.BodyType.Html,
                },
                Location = new Models.EventLocation
                {
                    Name = "PiaSys.com Head Quarters",
                },
                IsAllDay    = false,
                IsOrganizer = true,
                ShowAs      = Models.EventStatus.WorkingElsewhere,
                Type        = Models.EventType.SingleInstance,
            });

            var nextMonday     = DateTime.Now.AddDays(((int)DayOfWeek.Monday - (int)DateTime.Now.DayOfWeek + 7) % 7);
            var nextMonday9AM  = new DateTime(nextMonday.Year, nextMonday.Month, nextMonday.Day, 9, 0, 0);
            var lastDayOfMonth = new DateTime(nextMonday.AddMonths(1).Year, nextMonday.AddMonths(1).Month, 1).AddDays(-1);
            var eventSeries    = CalendarHelper.CreateEvent(calendars[0].Id,
                                                            new Models.Event
            {
                Start = new Models.TimeInfo
                {
                    DateTime = nextMonday9AM.ToUniversalTime(),
                    TimeZone = "UTC"
                },
                OriginalStartTimeZone = "UTC",
                End = new Models.TimeInfo
                {
                    DateTime = nextMonday9AM.AddHours(1).ToUniversalTime(),
                    TimeZone = "UTC"
                },
                OriginalEndTimeZone = "UTC",
                Importance          = Models.ItemImportance.Normal,
                Subject             = "Recurring Event about Microsoft Graph API",
                Body = new Models.ItemBody
                {
                    Content = "<html><body><h2>Let's talk about the Microsoft Graph API!</h2></body></html>",
                    Type    = Models.BodyType.Html,
                },
                Location = new Models.EventLocation
                {
                    Name = "Paolo's Office",
                },
                IsAllDay    = false,
                IsOrganizer = true,
                ShowAs      = Models.EventStatus.Busy,
                Type        = Models.EventType.SeriesMaster,
                Recurrence  = new Models.EventRecurrence
                {
                    Pattern = new Models.EventRecurrencePattern
                    {
                        Type       = Models.RecurrenceType.Weekly,
                        DaysOfWeek = new DayOfWeek[] { DayOfWeek.Monday },
                        Interval   = 1,
                    },
                    Range = new Models.EventRecurrenceRange
                    {
                        StartDate = nextMonday9AM.ToUniversalTime(),
                        Type      = Models.RecurrenceRangeType.EndDate,
                        EndDate   = lastDayOfMonth.ToUniversalTime(),
                    }
                }
            });

            var seriesInstances = CalendarHelper.ListSeriesInstances(
                calendar.Id, eventSeries.Id, DateTime.Now, DateTime.Now.AddMonths(2));

            var singleEventToUpdate = CalendarHelper.GetEvent(calendar.Id, events[0].Id);

            singleEventToUpdate.Attendees = new List <Models.UserInfoContainer>(
                new Models.UserInfoContainer[]
            {
                new Models.UserInfoContainer
                {
                    Recipient = new Models.UserInfo
                    {
                        Name    = model.MailSendToDescription,
                        Address = model.MailSendTo,
                    }
                },
            });
            var updatedEvent = CalendarHelper.UpdateEvent(calendar.Id, singleEventToUpdate);

            CalendarHelper.DeleteEvent(calendar.Id, singleEvent.Id);
            CalendarHelper.DeleteEvent(calendar.Id, eventSeries.Id);

            return(View("Index"));
        }