2009-12-22 135 views
2

我想通过电子邮件发送结果文件。我正在一个导入错误:python电子邮件错误

Traceback (most recent call last): 
    File "email_results.py", line 5, in ? 
    from email import encoders 
ImportError: cannot import name encoders 

我也不清楚如何得到这个连接到服务器。谁能帮忙?谢谢

#!/home/build/test/Python-2.6.4 
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]'): 
zf = tempfile.TemporaryFile(prefix='mail', suffix='.zip') 
zip = zipfile.ZipFile(zf, 'w') 
zip.write(the_file) 
zip.close() 
zf.seek(0) 

# 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() 
+0

那么你是如何解决问题的?电子邮件是标准库的一部分,那为什么它不起作用? – Michael 2014-02-19 18:57:25

回答

9

问题不在于你无法连接到服务器,而是因为某些原因你无法导入email.encoders。你有没有一个名为email.py或email.pyc的文件?

+0

为了解决这个python 2.x,只允许显式的相对导入:'from __future__ import aboslute_import' – 2016-11-18 18:06:41