Tôi đã xem qua nhiều hướng dẫn, cũng như các câu hỏi khác ở đây về tràn ngăn xếp và tài liệu và giải thích ở mức tối thiểu, chỉ là mã không giải thích được. Tôi muốn gửi một tệp mà tôi đã nén và gửi tệp dưới dạng tệp đính kèm. Tôi đã thử sao chép và dán mã được cung cấp, nhưng nó không hoạt động, do đó tôi không thể khắc phục vấn đề. Vì vậy, những gì tôi hỏi là nếu có ai biết giải thích làm thế nào smtplib cũng như thư viện email và MIME làm việc cùng nhau để gửi một tập tin, cụ thể hơn, làm thế nào để làm điều đó với một tập tin zip. Bất kỳ trợ giúp sẽ được đánh giá cao.Cách gửi tệp zip dưới dạng tệp đính kèm trong python?
Đây là mã mà mọi người đề cập đến:
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()
tôi nghi ngờ vấn đề này là mã này kéo khóa một tập tin là tốt. Tôi không muốn nén bất kỳ thứ gì vì tôi đã có một tệp nén mà tôi muốn gửi. Trong cả hai trường hợp, mã này kém tài liệu cũng như các thư viện python khi chúng không cung cấp thông tin chi tiết về bất kỳ tệp img và tệp văn bản nào trong quá khứ.
CẬP NHẬT: Lỗi tôi đang nhận ngay bây giờ. Tôi cũng đã cập nhật những gì có trong tệp của mình với mã ở trên
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)
* Mã * nào không hoạt động * cách nào? – Cameron
Đây là ... mẫu mã thứ hai trong tài liệu cho mô-đun email '. Bạn sẽ phải đưa ra một số chi tiết cụ thể để có được bất kỳ câu trả lời nào về cơ bản sẽ không phải là bản sao của mẫu đó. – millimoose
Nó không phải là một bản sao ... Tôi yêu cầu họ thực sự giải thích làm thế nào nó làm những gì tôi cần thông qua một tập tin zip. Nhưng tôi sẽ đăng cùng một mã mà mọi người liên tục đề cập đến nhưng không giải thích ... – Andy