Log*_*acy 3 imap google-apps-script gmail-api
最终,我的目标是通过具有唯一链接的自动加载图像来阻止电子邮件跟踪.我知道谷歌使用代理加载图片,所以至少他们不会透露我的IP地址,但有些个人和组织烦人地将跟踪器嵌入他们的电子邮件中 - 他们会主动检查我是否阅读他们的电子邮件.
特别是在Gmail应用中,我可以关闭图片的自动加载功能,但我希望对没有此设置的其他应用提供类似的保护.例如,显然无法通过Google收件箱执行此操作.
我目前的想法是编写一个可以在新邮件上运行的后端脚本(从事件或频繁轮询中接收)将嵌入的HTML图像转换为指向这些图像的超链接链接 - 仅在我真正需要图像时使用.这样,无论我用什么应用程序打开电子邮件,我都可以控制如何/何时跟踪.编辑电子邮件是我用MS Exchange Server API完成的,我正在寻找一种方法来使用Gmail - 通过任何可用的方式.
我在2010年发现了一些关于如何使用Google Apps脚本和Gmail本身修改主题行的线索.当时,您无法做到这一点,但从那时起它们似乎已经更新,或者有使用Gmail API或IMAP的解决方案.
对于我的Gmail帐户,如何以编程方式修改(并保存更改)收到的电子邮件?
可能的解决方案:
我认为Gmail API可以完美地满足您的需求.
假设我正在每分钟轮询我的收件箱以获取新邮件,并使用Users.messages.list()-request.我小心翼翼地使用after我query在上次检查收件箱时的值中的-parameter,这是自纪元以来的秒数.我只询问潜在新消息的ID.您还可以订阅推送事件,以降低用户在轮询和更改消息之前按下消息的风险,如评论中@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}
Run Code Online (Sandbox Code Playgroud)
响应:
{
"messages": [
{
"id": "14ebc16800d1fdc0"
}, ...
]
}
Run Code Online (Sandbox Code Playgroud)
哈!我有一条新消息.我得到它原始,解码其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}
Run Code Online (Sandbox Code Playgroud)
响应:
{
"raw": "RGVsaXZlcmVk..."
}
Run Code Online (Sandbox Code Playgroud)
我们来做前面提到的base64解码.将所有" - "替换为"+",将"_"替换为"/",将其从URL安全base64数据转换为常规base64编码数据.
atob("RGVsaXZlcmVk...".replace(/\-/g, '+').replace(/\_/g, '/'));
Run Code Online (Sandbox Code Playgroud)
结果:
<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>
Run Code Online (Sandbox Code Playgroud)
当然包含很多img-tags.
我只是提取img-tags,获取URL,并img使用我最喜欢的XML Parser删除邮件中的所有-tags .
删除标记后,我只是在我认为合适的邮件中插入URL,然后将其编码回到检索到的URL安全base64编码数据.
btoa("<html lang="en">...".replace(/\+/g, '-').replace(/\//g, '_'));
Run Code Online (Sandbox Code Playgroud)
最后,我删除原始邮件并插入修改后的邮件.
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..."
}
Run Code Online (Sandbox Code Playgroud)
我的新修改邮件现在在收件箱中!
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |