作为发件人,使用 API 或标头,是不是可以检测电子邮件是不是使用 Gmail 的“计划发送”发送?

Posted

技术标签:

【中文标题】作为发件人,使用 API 或标头,是不是可以检测电子邮件是不是使用 Gmail 的“计划发送”发送?【英文标题】:As sender, using API or headers, is it possible to detect if an email was sent using Gmail's “Schedule Send”?作为发件人,使用 API 或标头,是否可以检测电子邮件是否使用 Gmail 的“计划发送”发送? 【发布时间】:2021-03-25 06:41:00 【问题描述】:

我需要检测是否使用 Gmail[1] 中的“计划发送”工具、通过 API 或读取电子邮件标题(在发件人端/收件箱)发送电子邮件。

与这里完全相反的情况:As a recipient, is it possible to detect if an email was sent via Gmail's "Schedule Send" vs. "Send"?

根据我的经验,预定的电子邮件看起来像 API 的草稿或收到的电子邮件(您的地址在“发件人”中),然后,它会在发送时引发一个添加“已发送”标签的事件到电子邮件。有没有办法知道这些是在活动开始前发出的电子邮件?

[1]https://support.google.com/mail/answer/9214606?co=GENIE.Platform%3DDesktop&hl=en

【问题讨论】:

【参考方案1】:

问题:

默认情况下,您无法检测到这一点。消息头不包含任何与此相关的信息,API 的Message resource 没有任何字段可以说明这一点。

此外,即使 Scheduled 是保留的系统标签,因此无法使用该名称创建标签:

Scheduled 不是 API 中可以找到的标签(例如通过调用users.labels.list),因此您无法根据消息是否具有此标签来过滤消息(例如使用users.messages.list)。

解决方法:

为计划消息创建自定义标签,并将此标签应用于这些消息:

然后您可以列出包含此标签的消息。

为此,您应该首先检索相应的labelId,您可以通过首先调用users.labels.list 来获取它。

然后调用users.messages.list并将之前的id添加到labelIds,这样就只返回带有这个标签的消息:

提交功能请求:

我建议您在相应的Issue Tracker's component 中提交功能请求,以便可以通过 Gmail API 以编程方式列出预定邮件。

【讨论】:

谢谢!,这证实了我的怀疑。如果我们可以通过 API 读取内部标签“Scheduled”(与其他系统标签一样),检测将非常容易。我将发送功能请求。我无法使用该解决方法,因为我需要在从多个不同帐户收集数据的 ETL 中实施该解决方案。

以上是关于作为发件人,使用 API 或标头,是不是可以检测电子邮件是不是使用 Gmail 的“计划发送”发送?的主要内容,如果未能解决你的问题,请参考以下文章

作为收件人,是不是可以检测电子邮件是通过 Gmail“计划发送”还是“发送”发送的?

从 PHP 发送 MIME 电子邮件时,Exim 会覆盖“发件人”标头

通过电子邮件标头检测电子邮件正文语言的可能性

隐藏或替换电子邮件地址 mailto:Laravel

ORBEON:是不是可以添加自定义标头或向 API 授权方发送会话 cookie

如果地址是别名,如何使用 ews-java-api 识别收件人电子邮件?