Python:通过smtp向gmail发送可执行二进制文件

Python:通过smtp向gmail发送可执行二进制文件,python,gmail,executable,smtplib,Python,Gmail,Executable,Smtplib,如何更改可执行二进制文件的实际文件扩展名,以便通过gmail smtp协议(全部采用python)发送该文件 示例:“binary”到“binary.jpg” 我试试这个: import gzip, shutil src = open('3c7983cb70e9630cc4ee2fe3e1fb16c2', 'rb') dest = gzip.open('3c7983cb70e9630cc4ee2fe3e1fb16c2.gz.jpg', 'wb') shutil.copyfileobj(src,

如何更改可执行二进制文件的实际文件扩展名,以便通过gmail smtp协议(全部采用python)发送该文件

示例:“binary”到“binary.jpg”

我试试这个:

import gzip, shutil src = open('3c7983cb70e9630cc4ee2fe3e1fb16c2', 'rb') dest = gzip.open('3c7983cb70e9630cc4ee2fe3e1fb16c2.gz.jpg', 'wb') shutil.copyfileobj(src, dest) 导入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 Our system detected an illegal attachment on your message. Please\n5.7.0 visit http://mail.google.com/support/bin/answer.py?answer=6590 to\n5.7.0 review our attachment guidelines. n18sm433437wbh.23') smtplib.SMTPDataError:(552,'5.7.0我们的系统在您的邮件上检测到非法附件。请访问\n5.7.0http://mail.google.com/support/bin/answer.py?answer=6590 查看附件指南。n18sm433437wbh.23')
根据谷歌的政策,二进制文件是被禁止的

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. 

所以谷歌正在解压你的文件,并且很可能会检查文件头来确定文件类型(不依赖提供的扩展名。为了避免这种情况,您可以尝试将其作为受密码保护的ZIP文件上载,因为如果谷歌允许的话,谷歌将无法打开它来扫描内容。另一种选择是在发送文件之前对文件进行加密,可能即使是一个非常简单的XOR加密也足以通过过滤。然后在检索文件时需要解密。

根据谷歌的政策,二进制文件是被禁止的

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. 

所以谷歌正在解压你的文件,并且很可能会检查文件头来确定文件类型(不依赖提供的扩展名。为了避免这种情况,您可以尝试将其作为受密码保护的ZIP文件上载,因为如果谷歌允许的话,谷歌将无法打开它来扫描内容。另一种选择是在发送文件之前对文件进行加密,可能即使是一个非常简单的XOR加密也足以通过过滤。然后在检索文件时需要解密。

更传统的做法是将文件命名为
.jpg.gz
,而不是
.gz.jpg
。我怀疑这会解决您的问题,但它会让事情更清楚。此外,
gmail
可能会检查二进制文件的内容,以确定它是否是ex无论扩展名是什么,gmail都是可执行的。是什么让你认为gmail的工程师不够聪明,不能不使用Windows?在大多数操作系统上,文件扩展名是完全不相关的,依靠它来检测非法附件是愚蠢的。压缩jpeg是一种资源浪费,可能会增加文件的大小。更传统的做法是o将文件命名为
.jpg.gz
而不是
.gz.jpg
。我怀疑这会解决你的问题,但会让事情变得更清楚。此外,
gmail
可能会检查二进制文件的内容,以确定它是否是一个可执行文件,而不管它的扩展名如何。是什么让你认为gmail的工程师不够聪明不使用Windows?在大多数操作系统上,文件扩展名是完全不相关的,依靠它来检测非法附件是愚蠢的。压缩jpeg是一种资源浪费,可能会增加文件的大小。如何将文件编码为base64?从中无法发送包含zip文件的受密码保护的zip文件。如果可能,请解压缩所有文件或删除密码保护。Mac用户发送一个包含另一个zip文件的zip文件会增加文件损坏的可能性。建议您先解压缩所有文件,然后只创建一个zip文件。如何将文件编码为base64?无法从中发送密码包含zip文件的受保护zip文件。如果可能,请解压缩所有文件或删除密码保护。Mac用户发送同时包含另一个zip文件的zip文件会增加文件损坏的可能性。建议您先解压缩所有文件,然后只创建一个zip文件。