Я использую Google Calendar Api v3 для .Net в своем проекте.Мне нужно создать событие и отправить уведомление, когда любой участник отвечает на событие («Да», «Нет»).Я прочитал документацию API и попробовал то, что он говорит.Ниже приведен код, с помощью которого я создаю учетные данные учетной записи службы и создаю событие с информацией об организаторе и создателе.
У меня есть домен "example.net", и я пытаюсь создать событие с организатором, у которого есть электронная почта "organizer@example.net", как организатор, так и участники могут быть из разных доменов, таких как" gmail, outlook ".
Но всякий раз, когда я создаю событие, api автоматически отправляет электронное письмо участникам об информации о событии, но органайзер выглядит как" calendar @ example-calendar.iam.gserviceaccount.com ", который определен в файле" calendar.json ".Поэтому, когда участник отвечает на событие, организатор не может получить по электронной почте информацию о том, что участник ответил на событие.Я не смог установить органайзер на «organizer@example.com», это всегда «calendar@example-calendar.iam.gserviceaccount.com».
Пожалуйста, посмотрите на приведенный ниже код и скажите мне, как я могу установить для организатора, создателя события, «organizer@example.com» (который также может быть на другом адресе электронной почты с другим доменом, таким как gmail, outlook)или как сделать так, чтобы календарь Google отправлял по электронной почте уведомление организатору мероприятия, когда какой-либо участник отвечает на событие (да или нет)
private static Event SendCalendarInvitation()
{
try
{
string credPath = @"C:\calendar.json";
var json = File.ReadAllText(credPath);
var cr = JsonConvert.DeserializeObject<PersonalServiceAccountCred>(json);
var xCred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(cr.client_email)
{
Scopes = new[] {
CalendarService.Scope.Calendar
}
}.FromPrivateKey(cr.private_key));
// Create the service
CalendarService service = new CalendarService(new BaseClientService.Initializer()
{
HttpClientInitializer = xCred
});
Event calendarEvent = new Event
{
Summary = "Example Event",
Location = "Los Angeles",
Description = "Description",
Start = new EventDateTime()
{
DateTime = new DateTime(2018, 6, 2, 10, 0, 0),
TimeZone = "America/Los_Angeles"
},
End = new EventDateTime()
{
DateTime = new DateTime(2018, 6, 2, 12, 0, 0),
TimeZone = "America/Los_Angeles"
},
Attendees = new List<EventAttendee>()
{
new EventAttendee() { Email = "organizer@example.com", Organizer = true},
new EventAttendee() { Email = "attendee@gmail.com"}
},
Creator = new Event.CreatorData()
{
Email = "organizer@example.com",
DisplayName = "Organizer"
},
Organizer = new Event.OrganizerData()
{
Email = "organizer@example.com",
DisplayName = "Organizer"
},
Reminders = new Event.RemindersData()
{
UseDefault = false,
Overrides = new List<EventReminder>()
{
new EventReminder()
{
Method = "email",
Minutes = 30
},
new EventReminder()
{
Method = "email",
Minutes = 14400
}
}
}
};
Event calendarEventResult = null;
var statusCode = System.Net.HttpStatusCode.Accepted;
try
{
var request = service.Events.Insert(calendarEvent, "primary");
request.SendNotifications = true;
calendarEventResult = request.Execute();
}
catch (Exception ex)
{
statusCode = System.Net.HttpStatusCode.BadRequest;
}
return calendarEventResult;
}
catch (Exception ex)
{
return null;
}
}