如何发送带有Python附加zip文件的电子邮件?

如何发送带有Python附加zip文件的电子邮件?,python,email,zip,Python,Email,Zip,我的目录中有一个名为csv的zip文件夹: /主页/本地/用户/项目/zip_模块/csv 我想用这个zip文件夹作为附件发送一封电子邮件 到目前为止,我一直使用smtplib从Python发送电子邮件 模块,但我不知道如何发送带有zip文件夹作为附件的电子邮件 我在谷歌上搜索过,但我找到的代码是用于压缩和发送电子邮件的,而不是将zip文件附加到电子邮件中。试试标准库中的。它允许您构造多部分MIME消息,其中可以包含要发送的文本的文本/纯文本部分和zip文件的应用程序/zip部分。然后,您可以将

我的目录中有一个名为csv的zip文件夹:

/主页/本地/用户/项目/zip_模块/csv 我想用这个zip文件夹作为附件发送一封电子邮件

到目前为止,我一直使用smtplib从Python发送电子邮件 模块,但我不知道如何发送带有zip文件夹作为附件的电子邮件


我在谷歌上搜索过,但我找到的代码是用于压缩和发送电子邮件的,而不是将zip文件附加到电子邮件中。

试试标准库中的。它允许您构造多部分MIME消息,其中可以包含要发送的文本的文本/纯文本部分和zip文件的应用程序/zip部分。然后,您可以将消息序列化为字符串,并使用smtplib发送该字符串。

请尝试从标准库发送消息。它允许您构造多部分MIME消息,其中可以包含要发送的文本的文本/纯文本部分和zip文件的应用程序/zip部分。然后,您可以将消息序列化为字符串,并使用smtplib发送该字符串。

假设要附加的zip文件为“/home/local/user/project/zip\u module/csv.zip”, 收件人、发件人、主题和文本分别包含收件人地址、发件人地址、主题和邮件文本

那么

现在像使用smtplib一样发送电子邮件,电子邮件文本为msg

e、 g


假设您希望附加的zip文件是“/home/local/user/project/zip_module/csv.zip”, 收件人、发件人、主题和文本分别包含收件人地址、发件人地址、主题和邮件文本

那么

现在像使用smtplib一样发送电子邮件,电子邮件文本为msg

e、 g


k我尝试了上面的代码,它最后显示了回溯最近的调用:File schedular_runner.py,第78行,部分。addheader'Content-Transfer-Encoding',Encoding File/usr/lib64/python2.7/MimeWriter.py,第105行,在addheader line=value.split\n AttributeError:'NoneType'对象没有属性'split'My bad,请使用“binary”或“base64”编码,而不是此处声明的None ftype,encoding='application/zip',Nonethankyou,但实际上已成功发送电子邮件,但该邮件没有附件,通过打印,我知道是否有文件到附件路径,我可以看到要提取的zip文件,但它并没有附加到我在上面尝试过的mailk代码中,它最后显示了对最近调用的回溯:文件schedular_runner.py,第78行,部分。addheader'Content-Transfer-Encoding',Encoding File/usr/lib64/python2.7/MimeWriter.py,第105行,在addheader lines=value.split\n AttributeError:“NoneType”对象没有属性“split”My bad,请使用“binary”或“base64”编码,而不是此处声明的None ftype,encoding='application/zip',Nonethankyou,但实际上已成功发送电子邮件,但该邮件没有附件,通过打印,我知道是否有文件到附件的路径,我可以看到要提取的zip文件,但它没有附加到邮件
import smtplib, MimeWriter, mimetools, base64

message = StringIO.StringIO()
email_msg = MimeWriter.MimeWriter(message)
email_msg.addheader('To', to)
email_msg.addheader('From', sender)
email_msg.addheader('Subject', subject)
email_msg.addheader('MIME-Version', '1.0')

email_msg.startmultipartbody('mixed')

part = email_msg.nextpart()
body = part.startbody('text/plain')
part.flushheaders()
body.write(text)

file_to_attach = '/home/local/user/project/zip_module/csv.zip'
filename = os.path.basename(file_to_attach)
ftype, encoding = 'application/zip', None

part = email_msg.nextpart()
part.addheader('Content-Transfer-Encoding', encoding)
body = part.startbody("%s; name=%s" % (ftype, filename))
mimetools.encode(open(file_to_attach, 'rb'), body, encoding)

email_msg.lastpart()

email_text = message.getvalue()
smtp = smtplib.SMTP(SERVER, PORT)
smtp.login(USER, PASSWORD)
smtp.sendmail(sender, to, email_text)
smtp.quit()