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

问题描述 投票:0回答:2

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

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代理白名单设置。它显示了图像的预览。但图像链接不起作用。

PS:我也尝试了here建议的方法,但没有成功。

更新1: 图像存储在AWS s3存储桶中。如果我将它们公开,那么它们就可以正常工作。但我不能公开。还有其他办法吗?

image amazon-s3 gmail
2个回答
0
投票

图像存储在AWS s3存储桶中。如果我将它们公开,那么它们就可以正常工作。但我不能公开。还有其他办法吗?

如果您想继续通过 URL 引用图像,那么简短的答案是“否”,因为 GMail 的图像代理需要通过某种方式通过“公共”互联网访问您的图像。

这个问题有点偏离主题,因为它与 Django 关系不大,但如果您使用 GMail 进行业务您可以配置哪些 URL 不应通过代理。这应该允许您防止从“私有”S3 存储桶 URL 提供的图像被代理。请注意,这仅适用于您企业域内的 GMail 帐户;例如,如果电子邮件发送到非企业或不同的企业 Gmail 帐户,则图像将被代理并无法加载。

另一种方法可以避免完全代理它以在电子邮件中附加图像,而不是通过 URL 引用它。您可以参考这个答案了解如何实现这一点https://stackoverflow.com/a/3787766/70191


0
投票

这可能不相关,但我们最近看到了同样的问题。我们的 AWS WAF 全局设置包含两条规则:

  • AWS-AWSManagedRulesAmazonIpReputationList
  • AWS-AWSManagedRulesKnownBadInputsRuleSet

这些规则是我们 SOC2 工作的一部分提出的。突然(已经运行了几个月),信誉列表规则开始阻止 Google 的图像代理服务。我们制定了允许图像代理服务的规则,它解决了问题。

请注意,我们将图像存储在具有 CloudFront 分布的 S3 存储桶中,并且 WAF 设置与 CloudFront 绑定。

© www.soinside.com 2019 - 2024. All rights reserved.