如何为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();
}
}
}