我的目录中有一个名为 zip 的文件夹csv
:
- /home/local/user/project/zip_module/csv
我想用这个 zip 文件夹作为附件发送一封电子邮件。
到目前为止,我已经使用该smtplib
模块从 Python 发送电子邮件,但我不知道如何发送带有 zip 文件夹作为附件的电子邮件。
我在 Google 上搜索过,但我找到的代码是用于压缩和发送电子邮件,而不是附加 zip 文件到电子邮件。
假设您要附加的 zip 文件是'/home/local/user/project/zip_module/csv.zip'
、 、to
、sender
,subject
并text
分别包含您的收件人地址、发件人地址、主题和邮件文本。
然后,
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()
现在像使用一样发送电子邮件smtplib
,使用email_text
asmsg
例如
smtp = smtplib.SMTP(SERVER, PORT)
smtp.login(USER, PASSWORD)
smtp.sendmail(sender, to, email_text)
smtp.quit()
试试标准库中的email
包。它允许您构建多部分 MIME 消息,其中可以包含text/plain
一部分(用于您要发送的文本)和application/zip
ZIP 文件的一部分。然后,您可以将消息序列化为字符串并使用smtplib
.