通过 Django 发送邮件时 Gmail 损坏的图像链接

Gmail's broken image links when sending mails through Django

我正在使用 Django 中的 SMTP 协议发送电子邮件。当我发送图像 link 时,它是这样的:

https://example.com/images/pic1.jpg

但是 Gmail 将其转换为如下形式:

https://ci5.googleusercontent.com/proxy/vI79kajdUGm6Wk-fjyicDLjZbCB1w9NfkoZ-zQFOB2OpJ1ILmSvfvHmE56r72us5mIuIXCFiO3V8rgkZOjfhghTH0R07BbcQy5g=s0-d-e1-ft#https://example.com/images/pic1.jpg

我尝试了图像 URL 代理白名单设置。它显示 image.But 图片 link 的预览不工作。

PS: 我也试过建议的方法 here 无济于事。

更新 1: 图像存储在 AWS s3 存储桶中。如果我让它们 public 那么它们就可以正常工作。但是我不能用其他方法让它们 public.Is 吗?

The images are stored in the AWS s3 bucket. If I make them public then they work fine. But I can't make them public.Is there any other way?

如果您想通过 URL 继续引用图片,简短的回答是“否”,因为 GMail 的图片代理需要通过“public”互联网以某种方式访问​​您的图片。

这个问题有点离题,因为它与 Django 关系不大,但如果您使用 GMail 进行业务 you can configure which URLs should not go through the proxy。这应该允许您防止从您的“私有”S3 存储桶 URL 提供的图像被代理。请注意,这仅适用于您企业域内的 GMail 帐户;例如,如果电子邮件发送到非企业或其他企业 Gmail 帐户,图像将被代理并无法加载。

另一种方法可以避免完全代理它以在电子邮件中附加图像,而不是通过 URL 引用它。您可以参考此答案以了解如何实现 .