Надеюсь, этот вопрос можно задать здесь, учитывая, что он может заменить мое использование API Календаря Google. Думаю, что все в порядке.
https://stackoverflow.com/help/on-topic
Когда вы получаете электронное письмо о событии, таком как бронирование рейса, концерта или ресторана, оно автоматически добавляется в ваш календарь.
https://support.google.com/calendar/answer/6084018?co=GENIE.Platform%3DDesktop&hl=en
Я думаю, что это действительно полезная функция, но я хотел бы знать, смогу ли я создать электронное письмо, которое автоматически появится в моем календаре. В настоящее время я использую Calendar API, Google.Apis.Calendar.v3 , но если бы я мог заставить это работать, моему приложению больше не нужно было бы обрабатывать учетные данные, что было бы действительно здорово.
Случаи, когда электронное письмо не отображается в соответствии со страницей поддержки:
События не будут отображаться, если электронное письмо было:
- Отправлено в список рассылки
- Отправлено вам cc
- Перенаправлено с другой учетной записи электронной почты
События добавляются только в том случае, если они находятся в электронном письме с подтверждением от компаний о:
- Авиабилеты
- Гостиницы
- Рестораны
- Билетные события, такие как фильмы и концерты
Я читал Events from Gmail
и создал пример ниже.
https://developers.google.com/gmail/markup/google-calendar
https://developers.google.com/gmail/markup/getting-started
https://developers.google.com/gmail/markup/reference/event-reservation
<html>
<body>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EventReservation",
"reservationNumber": "E123456789",
"reservationStatus": "http://schema.org/Confirmed",
"underName": {
"@type": "Person",
"name": "Oscar Andersson"
},
"reservationFor": {
"@type": "Event",
"name": "Foo Fighters Concert",
"performer": {
"@type": "Organization",
"name": "The Foo Fighters",
"image": "http://www.amprocktv.com/wp-content/uploads/2027/01/foo-fighters-1-680x383.jpg"
},
"startDate": "2019-05-08T19:30:00-01:00",
"endDate": "2019-05-08T23:00:00-01:00",
"location": {
"@type": "Place",
"name": "AT&T Park",
"address": {
"@type": "PostalAddress",
"streetAddress": "AT&T Park",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94107",
"addressCountry": "US"
}
}
},
"ticketToken": "qrCode:AB34",
"ticketNumber": "abc123",
"numSeats": "1",
"modifiedTime": "2019-05-07T15:15:00-01:00",
"modifyReservationUrl": "http://united.com/modifyreservation.html"
}
</script>
<p>
Dear Oscar, thanks for booking your Google I/O ticket with us.
</p>
<p>
BOOKING DETAILS<br />
Reservation number: IO12345<br />
Order for: Oscar Andersson<br />
Event: Google I/O 2013<br />
Start time: May 15th 2013 8:00am PST<br />
Venue: Moscone Center, 800 Howard St., San Francisco, CA 94103<br />
</p>
</body>
</html>
Я проверил разметку с помощью Email Markup Tester
от Google, и там написано No errors detected
. Затем я импортировал приведенный выше HTML-код из Notepad ++ в Outlook через «Выполнить» -> «Отправить через Outlook» и отправил его в мой Gmail. Я получил письмо, но событие «Календарь» отсутствует.
https://www.google.com/webmasters/markup-tester/
Согласно их документации All schemas you send to yourself (from x@gmail.com to x@gmail.com) will be displayed in Google products.
, но я не вижу события.
https://developers.google.com/gmail/markup/registering-with-google
Я пытался создать свою собственную программу для отправки мне электронной почты через серверы Gmail, но события по-прежнему не отображаются. Пробовал копировать множество событий, упомянутых на их руководствах и справочной странице.
var emailAddress = new MailAddress("myGmail@gmail.com", "Ogglas");
SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp.gmail.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential("myGmail@gmail.com", "mySuperSecurePassword789&");
MailMessage mailMessage = new MailMessage();
mailMessage.From = emailAddress;
mailMessage.To.Add(emailAddress);
mailMessage.Subject = "Concert test";
mailMessage.IsBodyHtml = true;
var currentPath = Directory.GetCurrentDirectory();
var htmlEmail = File.ReadAllText(currentPath + "\\Email.html");
mailMessage.Body = htmlEmail;
smtpClient.Send(mailMessage);
Пример из полета, как я бы хотел, чтобы это выглядело:
Gmail:
Календарь:
Пример с booking.com
Кому-нибудь здесь удалось заставить это работать?