gpt4 book ai didi

google-apps-script - 如何在 Gmail 邮件到达时对其进行编辑?

转载 作者:行者123 更新时间:2023-12-01 10:38:57 25 4
gpt4 key购买 nike

最终,我的目标是通过具有唯一链接的自动加载图像来防止电子邮件跟踪。我知道 Google uses a proxy to load the images所以至少他们不会透露我的 IP 地址,但是有些个人和组织讨厌地将跟踪器嵌入到他们的电子邮件中——他们会主动检查我是否阅读了他们的电子邮件。

特别是在 Gmail 应用程序中,我可以关闭图像的自动加载,但我希望为没有此设置的其他应用程序提供类似的保护。例如,显然 there isn't a way to do this with Google Inbox .

我目前的想法是编写一个可以在新邮件(从事件或频繁轮询中接收)上运行的后端脚本,将嵌入的 HTML 图像转换为指向这些图像的超链接——仅在我确实需要图像时使用。这样,无论我使用什么应用程序打开电子邮件,我都可以控制如何/何时跟踪我。编辑电子邮件是我使用 MS Exchange Server API 完成的工作,我正在寻找一种使用 Gmail 完成此操作的方法——无论使用何种方式。

我从 2010 年找到了几个关于如何使用 Google Apps Script 修改主题行的线程。和 Gmail itself .当时,您无法这样做,但从那时起这些似乎已经更新,或者有使用 Gmail API 或 IMAP 的解决方案。

tl;博士

对于我的 Gmail 帐户,我如何以编程方式修改(并保存更改)收到的电子邮件?

可能的解决方案:

  • Google Apps 脚本
  • Gmail API
  • IMAP
  • 其他?
  • 最佳答案

    我认为 Gmail API 非常适合您的需求。

    假设我每分钟都在我的收件箱中轮询新邮件,使用 Users.messages.list() -要求。我小心使用 after -参数在我的 query使用我上次检查收件箱时的值,为自纪元以来的秒数。我只要求潜在新消息的 ID。您也可以 subscribe to push events如@Max 在评论中提到的那样,在您轮询和更改消息之前降低用户按下消息的风险。如果脚本只适合您,则可能不是问题。

    q = after:<TIME_IN_SECONDS_SINCE_EPOCH_OF_LAST_POLL>
    fields = messages/id

    GET https://www.googleapis.com/gmail/v1/users/me/messages?fields=messages%2Fid&q=after%3A1437677475478&access_token={YOUR_API_KEY}

    回复:
    {
    "messages": [
    {
    "id": "14ebc16800d1fdc0"
    }, ...
    ]
    }

    哈!我有一条新消息。我得到它原始的,解码它的 URL 安全 base64 编码的内容,然后看看。
    format = raw
    fields = raw

    GET https://www.googleapis.com/gmail/v1/users/me/messages/14eb68cb028163ba?fields=raw&format=raw&access_token={YOUR_API_KEY}

    回复:
    {
    "raw": "RGVsaXZlcmVk..."
    }

    让我们进行前面提到的 base64 解码。将所有“-”替换为“+”,将“_”替换为“/”,以将其从 URL 安全的 base64 数据转换为常规的 base64 编码数据。
    atob("RGVsaXZlcmVk...".replace(/\-/g, '+').replace(/\_/g, '/'));

    结果:
    <html lang="en">
    <head>
    <title>
    Computerphile just uploaded a video
    </title>

    .
    .
    .


    <img class="open_tracking_img" src="http://www.youtube.com/attribution_link?a=vi-KC3YA0Qc&u=/gen_204%3Fa%3Dem-uploademail" width="1" height="1">

    .
    .
    .
    </html>

    包含大量 img - 标签,当然。

    我只是提取了 img -tags,获取 URL,并删除所有 img - 在邮件中标记我最喜欢的 XML Parser .

    删除标签后,我只需将 URL 插入我认为合适的邮件中,并将其编码回 URL 安全的 base64 编码数据,它是在其中检索的。
    btoa("<html lang="en">...".replace(/\+/g, '-').replace(/\//g, '_'));

    最后,我删除原始邮件并插入修改后的邮件。
    DELETE https://www.googleapis.com/gmail/v1/users/me/messages/14eb68cb028163ba?access_token={YOUR_API_KEY}

    POST https://www.googleapis.com/gmail/v1/users/me/messages?access_token={YOUR_API_KEY}

    {
    "raw": "RGVsaXZlcmVkLVRvO..."
    }

    我的新的、修改过的邮件现在在收件箱里!

    enter image description here

    关于google-apps-script - 如何在 Gmail 邮件到达时对其进行编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595478/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com