作为发件人,使用 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 会覆盖“发件人”标头