【问题标题】:Python: send executable binary file over smtp to gmailPython:通过 smtp 将可执行二进制文件发送到 gmail
【发布时间】:2011-06-28 21:17:27
【问题描述】:

如何更改可执行二进制文件的真实文件扩展名以通过 gmail smtp 协议发送该文件(全部在 python 中)。

示例:“二进制”到“binary.jpg”

我会试试这个:

导入 gzip、shutil src = open('3c7983cb70e9630cc4ee2fe3e1fb16c2', 'rb') dest = gzip.open('3c7983cb70e9630cc4ee2fe3e1fb16c2.gz.jpg', 'wb') shutil.copyfileobj(src, dest)

但是当我尝试通过 gmail smtp 发送它时,会发生这种情况:

smtplib.SMTPDataError: (552, '5.7.0 我们的系统在您的邮件中检测到非法附件。请\n5.7.0 访问 http://mail.google.com/support/bin/answer.py?answer=6590 到\ n5.7.0 查看我们的附件指南。n18s​​m433437wbh.23')

提前致谢。

【问题讨论】:

  • 将文件命名为 .jpg.gz 而不是 .gz.jpg 更为传统。我怀疑这会解决你的问题,但它会让事情变得更清楚。此外,gmail 可能会检查二进制文件的内容以确定它是否是可执行文件,而不管其扩展名如何。
  • 是什么让您认为 gmail 的工程师不够聪明,不能不使用 Windows?在大多数操作系统上,文件扩展名完全无关紧要,依靠它来检测非法附件是愚蠢的。
  • Gzip 压缩 jpeg 会浪费资源并且会增加文件的大小。

标签: python gmail executable smtplib


【解决方案1】:

根据 Google 的政策,二进制文件是被禁止的。

Gmail won't accept these types of files even if they are sent in a zipped
(.zip, .tar, .tgz, .taz, .z, .gz) format. If this type of message is sent to 
your Gmail address, it is bounced back to the sender automatically. 

因此,Google 正在解压缩您的文件,并且很可能会检查文件标题以确定文件类型(不依赖于提供的扩展名。要解决此问题,您可以尝试将其上传为受密码保护的 ZIP 文件,因为 google 不会能够破解它打开以扫描内容,假设他们允许这样做。另一个选择是在发送文件之前加密文件,甚至可能非常简单的 XOR 加密可能足以通过过滤。然后你需要解密在检索文件时。

【讨论】:

  • 文件编码到base64怎么样?
  • 来自support.google.com/a/answer/6590?hl=en 无法发送包含 zip 文件的受密码保护的 zip 文件。如果可能,请解压缩所有文件或取消密码保护。 Mac 用户发送包含另一个 zip 文件的 zip 文件会增加文件损坏的机会。我们建议您先解压缩所有文件,然后只创建一个 zip 文件。
猜你喜欢
  • 2021-05-08
  • 2014-08-27
  • 2018-11-13
  • 1970-01-01
  • 2014-03-31
  • 2020-12-13
  • 2012-12-13
  • 1970-01-01
  • 2017-08-22
相关资源
最近更新 更多