如何在 Gmail 中发送电子邮件,以便在 Google 日历中自动创建活动

Arg*_*osh 6 c# google-calendar-api google-schemas

我有一个要求,我们需要发送电子邮件,以便在收件人帐户的 Google 日历中自动创建活动。

\n

要求:

\n
    \n
  • 确认后需要发邮件
  • \n
  • 该电子邮件应让 Google 接受它作为一个事件
  • \n
\n

假设:

\n
    \n
  • 假设确认电子邮件将包含一些与事件相关的详细信息,例如:\n
      \n
    • 地点
    • \n
    • 开始时间
    • \n
    • 活动名称等
    • \n
    \n
  • \n
\n

方法:

\n\n

悬而未决的问题是 \xe2\x80\x93 我们可以发送电子邮件,但事件尚未创建(即使在指定格式的电子邮件 HTML 之后)。\n有人可以告诉我如何发送电子邮件,以便Google 日历中会自动创建活动吗?

\n

笔记:

\n
    \n
  • 为了发送电子邮件,我在 C# 中使用了类似的东西
  • \n
  • 首先,我为发件人的电子邮件打开不太安全的应用程序访问。然后,我使用以下代码。
  • \n
\n
using System.Net;\nusing System.Net.Mail;\n\nvar fromAddress = new MailAddress("from@gmail.com", "From Name");\nvar toAddress = new MailAddress("to@example.com", "To Name");\nconst string fromPassword = "fromPassword";\nconst string subject = "Subject";\nconst string body = "Body";\n\nvar smtp = new SmtpClient\n{\n    Host = "smtp.gmail.com",\n    Port = 587,\n    EnableSsl = true,\n    DeliveryMethod = SmtpDeliveryMethod.Network,\n    UseDefaultCredentials = false,\n    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)\n};\nusing (var message = new MailMessage(fromAddress, toAddress)\n{\n    Subject = subject,\n    Body = body\n})\n{\n    smtp.Send(message);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的电子邮件的 HTML。

\n
<!DOCTYPE html>\n\n<html lang="en" xmlns="http://www.w3.org/1999/xhtml">\n<head>\n    <meta charset="utf-8" />\n    <title></title>\n</head>\n    <body>\n        <p>\n            Dear John, thanks for booking your Google I/O ticket with us.\n        </p>\n        <p>\n            BOOKING DETAILS<br />\n            Order for: Hasnu Zama<br />\n            Event: Google I/O 2013<br />\n            When: Oct 18th 2021 19:00pm IST<br />\n            Venue: Moscone Center, 800 Howard St., San Francisco, CA 94103<br />\n            Reservation number: IO12345<br />\n\n        </p>\n\n        <!-- JSON-LD markup generated by Google Structured Data Markup Helper. -->\n        <script type="application/ld+json">\n            {\n              "@context": "http://schema.org",\n              "@type": "EventReservation",\n              "reservationNumber": "E123456789",\n              "reservationStatus": "http://schema.org/Confirmed",\n              "underName": {\n                "@type": "Person",\n                "name": "John Smith"\n              },\n              "reservationFor": {\n                "@type": "Event",\n                "name": "Foo Fighters Concert",\n                "startDate": "2021-10-18T19:00:00-05:30",\n                "location": {\n                  "@type": "Place",\n                  "name": "AT&T Park",\n                  "address": {\n                    "@type": "PostalAddress",\n                    "streetAddress": "24 Willie Mays Plaza",\n                    "addressLocality": "San Francisco",\n                    "addressRegion": "CA",\n                    "postalCode": "94107",\n                    "addressCountry": "US"\n                  }\n                }\n              }\n            }\n        </script>\n\n    </body>\n</html> \n
Run Code Online (Sandbox Code Playgroud)\n

这是根据文档中的示例应该可以工作的 JSON-LD,不知道为什么它不起作用。

\n

它存储在一个文件中,然后我读取该文件并将内容作为正文的参数传递。

\n
using System;\nusing System.IO;\n\nnamespace CreateEventFromEmail\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            Console.WriteLine("Hello World!");\n            string fromEmailId = "ronyrocx24@gmail.com";\n            string toEmailId = "ronyrocx24@gmail.com";\n\n            CreateAndSendEmail createAndSendEmail = new CreateAndSendEmail(fromEmailId, toEmailId);\n            string body = File.ReadAllText(@"D:\\office-work\\add-events-from-email-POC\\CreateEventFromEmail\\EmailTemplates\\EventDetails.html");\n            createAndSendEmail.SendEmail(body);\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n