最终,我的目标是通过具有唯一链接的自动加载图像来阻止电子邮件跟踪。我知道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的解决方案。
对于我的Gmail帐户,如何以编程方式修改(并保存更改)收到的电子邮件?
可能的解决方案:
答案 0 :(得分:5)
我认为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
- 代码,获取网址,并删除邮件中所有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..."
}
我的新修改邮件现在位于收件箱中!