0
我想使用Python3脚本将每天的电子邮件自动化为一个收件人。该电子邮件应该带有附件。Python 3 - 附件错误
目前我正在尝试下面的Python 3.5代码,其中令人难以置信的只能运行一次。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
fromaddr = "[email protected]"
toaddr = "[email protected]"
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = "Daily report"
body = "Email text"
msg.attach(MIMEText(body, 'plain'))
filename = 'DAILY REPORT.xls'
attachment = open('Z:\\DAILY REPORT.xls', "rb")
part = MIMEBase('application', 'octet-stream')
part.set_payload(attachment).read()
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)
server = smtplib.SMTP('smtp.server.biz', 25)
server.starttls()
server.login(fromaddr, "apasswordhere")
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()
第一次运行(并收到电子邮件+附件)后,它似乎不再有效。我公司不断获得唯一的例外是:
Traceback (most recent call last):
File "Z:/main.py", line 23, in <module>
part.set_payload(attachment).read()
AttributeError: 'NoneType' object has no attribute 'read'
请注意,是在远程NAS的文件被附加到电子邮件messange和Python脚本,本地monted为Z:在Windows Server 2012上 在此系统我安装了Pyton2和Python3两个不同的目录。当从consolle调用python.exe时,我的系统在Python2上默认,但是如果我用Python3运行我的脚本,我会得到同样的错误。 也在我的编辑器中运行脚本(Pyecharm在Python3控制台上默认)会引发相同的错误。
作为实在不明白,我会感谢任何意见,以解决我的错做
你期望行'part.set_payload(attachment).read ()'做什么?它看起来像你的第一个'''末尾:'part.set_payload(attachment.read())' – jwodder
感谢您的帮助,您的评论解决了我的问题。我无法看到我的错误。 –
@J_CsT:如果你找到了你的问题的答案,然后张贴答案并接受它。它对每个人都有好处。 –