Gmail 自动解析并添加日历活动的电子邮件

Email that is automatically parsed by Gmail and adds a Calendar event

提问人:Ogglas 提问时间:5/7/2019 最后编辑:Ogglas 更新时间:1/19/2021 访问量:3749

问:

我希望这个问题可以在这里问,因为它可以取代我对 Google Calendar API 的使用,我认为它应该没问题。

https://stackoverflow.com/help/on-topic

当您收到有关航班、音乐会或餐厅预订等活动的电子邮件时,系统会自动将其添加到您的日历中。

https://support.google.com/calendar/answer/6084018?co=GENIE.Platform%3DDesktop&hl=en

我认为这是一个非常简洁的功能,但我想知道我是否可以创建一个电子邮件,该电子邮件将自动显示在我的日历中。我目前正在使用日历 API, Google.Apis.Calendar.v3,但如果我能让它工作,我的应用程序将不再需要处理凭据,这将是非常棒的。

根据支持页面,电子邮件不会显示的情况:

如果电子邮件是:

  • 发送到邮件列表
  • 抄送发送给您
  • 重定向自其他电子邮件帐户

只有当事件出现在商家发送的确认电子邮件中时,才会添加这些事件:

  • 航班
  • 酒店
  • 餐馆
  • 售票活动,如电影和音乐会

我一直在阅读并创建了下面的示例。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>

我已经验证了来自 Google 的标记,它说.然后,我通过Run -> Send via Outlook将上面的HTML从Notepad ++导入Outlook,并将其发送到我的Gmail。我收到了电子邮件,但日历活动不存在。Email Markup TesterNo errors detected

https://www.google.com/webmasters/markup-tester/

根据他们的文件,但我看不到该事件。All schemas you send to yourself (from x@gmail.com to [email protected]) will be displayed in Google products.

https://developers.google.com/gmail/markup/registering-with-google

我尝试创建自己的程序以通过Gmail服务器将电子邮件发送给自己,但事件仍然没有显示。尝试复制他们的指南和参考页面上提到的许多事件。

var emailAddress = new MailAddress("[email protected]", "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("[email protected]", "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的:

enter image description here

日历:

enter image description here

booking.com 示例

enter image description here

这里有人设法让它工作吗?

C# 电子邮件 Gmail Google-Calendar-API Google-Schemas

评论

1赞 TheAddonDepot 5/8/2019
Events from Gmail默认情况下应启用,但请检查您的日历设置以确保它确实处于启用状态。另外,请注意 - “来自 Gmail 的事件不适用于政府帐号、有数据位置限制的帐号或没有 Gmail 的 Google 帐号”。
2赞 TheAddonDepot 5/8/2019
另请记住,并非所有电子邮件服务都支持 ld+json,因此可能是 Outlook 正在清理您的 html 或将其视为原始文本。
0赞 TheAddonDepot 5/8/2019
还有一件事,ld+json 只是 Gmail 中可用的 2 种电子邮件标记格式之一。您可以尝试使用其他格式(即)。Microdata
0赞 Ogglas 5/8/2019
@DimuDesigns 适用于大型公司的航班和酒店,因此已启用,如屏幕截图所示。查看了原始html,果然该脚本已从Outlook电子邮件中消失。然后我尝试了 putsmail.com 脚本被包括在内,但无论如何都没有出现。将尝试编写 som 代码并使用我自己的邮件服务器,看看是否有帮助。也尝试过,但不幸的是没有用。.emlMicrodata
0赞 Siva Senthil 8/20/2019
我遇到了同样的障碍,看不到出路。我正在使用 PowerShell 发送电子邮件。我实际上看不出原始消息内容在解析事件信息的邮件内容和不解析事件信息的邮件内容之间有任何区别。我正在使用我自己的电子邮件 ID 进行测试,这是一个常规的 gmail 帐户 ID。我想知道为什么谷歌在这方面也没有提供帮助。

答: 暂无答案