通过API

时间:2016-12-19 15:44:06

标签: c# email google-api google-calendar-api

如何为GoogleCalendar API通知指定电子邮件地址?

我需要使用C#dot-net通过Google API以编程方式操作我的Google日历。我已经能够成功创建,删除和修改事件,但我想要控制通知。目前只有电子邮件和用户界面弹出选项可用,电子邮件默认为Google电子邮件帐户。

我在想的是,如果我可以操纵使用的电子邮件地址,我可以发送电子邮件到我的Verizon电子邮件到短信地址,并发送短信而不是电子邮件(短信只适用于政府帐户)。或者可能是与Twilio等SMS服务接口的虚拟电子邮件。底线是我想向我选择的一个或多个电子邮件地址发送电子邮件通知。

电子邮件的唯一选项是在EventReminder覆盖的构造函数中:

new EventReminder{Method="email",Minutes=60};

这是我的工作代码:

namespace stuff
{
    class Program
    {
        static string[] Scopes = { CalendarService.Scope.Calendar };
        static string ApplicationName = "Google Calendar API .NET Quickstart";
        static string _Chelle = "fake_id@gmail.com";
        static string _EventCalendar = "jwejq36jjgwijg54iw7yjs7j7e@group.calendar.google.com";
        static void Main(string[] args)
        {
            UserCredential credential;

            using (var stream =
                new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = System.Environment.GetFolderPath(
                    System.Environment.SpecialFolder.Personal);
                credPath = Path.Combine(credPath, ".credentials/calendar-dotnet-quickstart.json");

                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    Scopes,
                    "user",
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
                Console.WriteLine("Credential file saved to: " + credPath);
            }

            // Create Google Calendar API service.
            var service = new CalendarService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = ApplicationName,
            });

            EventsResource.ListRequest request = service.Events.List(_EventCalendar);
            request.TimeMin = DateTime.Now;
            request.TimeMax = DateTime.Now.AddDays(30);
            request.ShowDeleted = false;
            Events events = request.Execute();
            if (events.Items != null && events.Items.Count > 0)
            {
                foreach (var eventItem in events.Items)
                {
                    // add new reminders
                    eventItem.Reminders = new Event.RemindersData
                    {
                        UseDefault = false,
                        Overrides = new[]
                        {
                            new EventReminder {Method="popup",Minutes=((60*24*7) - (60*9)) }, // one week before @ 0900
                            new EventReminder {Method="email",Minutes=((60*24*7) - (60*9)) }
                        }
                    };
                    try
                    {
                        service.Events.Update(eventItem, _EventCalendar, eventItem.Id).Execute();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                    Thread.Sleep(1000);
                }
            }
            else
            {
                Console.WriteLine("No events found.");
            }

            Console.Read();
        }
    }
}

0 个答案:

没有答案