我已經瀏覽了很多教程,以及其他關於堆棧溢出的問題,並且文檔和解釋至少是原因不明的代碼。我想發送一個我已經壓縮的文件,並將其作爲附件發送。我已經嘗試複製並粘貼提供的代碼,但它不起作用,因此我無法解決問題。如何發送一個zip文件作爲python中的附件?
所以我問的是,如果有人知道誰來解釋smtplib以及電子郵件和MIME庫如何一起發送文件,更具體地說,如何用zip文件來完成。任何幫助,將不勝感激。
這是代碼,每個人都指的是:
import smtplib
import zipfile
import tempfile
from email import encoders
from email.message import Message
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
def send_file_zipped(the_file, recipients, sender='[email protected]'):
myzip = zipfile.ZipFile('file.zip', 'w')
# Create the message
themsg = MIMEMultipart()
themsg['Subject'] = 'File %s' % the_file
themsg['To'] = ', '.join(recipients)
themsg['From'] = sender
themsg.preamble = 'I am not using a MIME-aware mail reader.\n'
msg = MIMEBase('application', 'zip')
msg.set_payload(zf.read())
encoders.encode_base64(msg)
msg.add_header('Content-Disposition', 'attachment',
filename=the_file + '.zip')
themsg.attach(msg)
themsg = themsg.as_string()
# send the message
smtp = smtplib.SMTP()
smtp.connect()
smtp.sendmail(sender, recipients, themsg)
smtp.close()
我懷疑這個問題是這樣的代碼拉鍊一個文件中。我不想壓縮任何內容,因爲我已經有了一個我想發送的壓縮文件。無論哪種情況,這些代碼都沒有很好的文檔記錄以及python庫本身,因爲它們沒有提供任何有關img文件和文本文件過去的信息。
更新:錯誤我現在得到。我也更新了我的文件中的以上代碼
Traceback (most recent call last):
File "/Users/Zeroe/Documents/python_hw/cgi-bin/zip_it.py", line 100, in <module>
send_file_zipped('hw5.zip', '[email protected]')
File "/Users/Zeroe/Documents/python_hw/cgi-bin/zip_it.py", line 32, in send_file_zipped
msg.set_payload(myzip.read())
TypeError: read() takes at least 2 arguments (1 given)
*什麼*代碼不工作*什麼*方式? – Cameron
這是......電子郵件模塊文檔中的第二個代碼示例。您必須提供一些具體信息才能得到任何答案,而這些答案本質上並不是該樣本的副本。 – millimoose
它不是副本......我要求他們真正解釋它是如何通過一個zip文件來完成我所需要的。但我會發布相同的代碼,大家經常提到但不解釋... – Andy