Google 日历如何在电子邮件发送后更新其内容?

How does Google Calendar update the content of an email AFTER it is sent?

Google 日历邀请电子邮件将在 之后更新,如果原始事件已更改,它们将被发送...Google 如何实现这一点?有没有人可以做到这一点的通用技术?或者这是唯一可能的,因为 Google 拥有两个 gMail/gCalendar 并且这两个系统是在 SMTP 之外的幕后集成的?

我的第一个猜测是他们使用了 iframe 或在打开电子邮件时加载的图像,但检查 gMail 页面的源没有显示任何迹象。

这是更新文本的屏幕截图:

这是在 gMail 中阅读电子邮件时页面该部分的 HTML:

注:

Inspecting Source 除了在包括 ajax.

在内的所有动态操作之后在页面中看到的内容标记之外,不会给您任何其他信息

要查看实际来源,您要访问 view-source:url

现在问题

该信息会在 运行 时间通过 JavaScript 代码自动更新。

在图像中,您检查了 Inspect 元素,它显示了实时视图的代码,因此,您看到了更新的内容。

这是通过JavaScript DOM和文本操作完成的。

为了验证这一点,

  1. 点击地址栏。
  2. 在url前加上view-source:。所以,它看起来像 view-source:https://url
  3. 然后按ctrl+ffind对应的键。
  4. 搜索 <div id=":8hg" 将显示 0 results

view-source 加载文件源,没有任何 ajax 或 JavaScript 操作。

源中不存在 div。所以,我们可以理解为是动态完成的。

详细检查时,

在源码中,我们可以看到一个link https://www.google.com/calendar/event?action\u003dVIEW\u0026eid\u003db..... 存储在一个array.

由此link,内容取自

(为了隐私我把一些文字涂黑了)

在 url 的 return 的基础上,更新了邮件内容。

为了验证这一点,

在邮件中,您可以看到此邀请已过期

但是在view-source:页面,搜索This invitation is out of date,会return0 results.

因此,可以肯定的是,日历详细信息是通过 Gmail 对 G 日历 API 的 API 调用获取的 API。

我想知道他们是否在发送电子邮件时在某些地方创建了一个图像 url 然后如果它发生变化他们就删除它,然后在电子邮件中他们有类似

的东西
<div id="updated"></div>
<img src="asdfawe" onerror="document.getElementById('updated').innerhtml="some text""/>

虽然我不确定他们是否不能使用 onerror 属性(b/c 电子邮件 + js = 坏主意)。唯一的其他方法就是使用 alt 属性并使用一些 css 技巧,但我看不出这会如何导致检查代码。