Discuss / Python / 加附件的部分我这边为什么显示说name 'MIMEMultipart' is not defined啊

加附件的部分我这边为什么显示说name 'MIMEMultipart' is not defined啊

Topic source

加附件的部分我这边为什么显示说name 'MIMEMultipart' is not defined啊,也就是上面的代码啊, from email import encoders from email.header import Header from email.mime.text import MIMEText from email.utils import parseaddr, formataddr

import smtplib

def _format_addr(s): name, addr = parseaddr(s) return formataddr((Header(name, 'utf-8').encode(), addr))

from_addr = input('From: ') password = input('Password: ') to_addr = input('To: ') smtp_server = input('SMTP server: ')

#邮件对象 msg = MIMEMultipart() msg['From'] = _format_addr('Python爱好者 <%s>' % from_addr) msg['To'] = _format_addr('管理员 <%s>' % to_addr) msg['Subject'] = Header('来自SMTP的问候……', 'utf-8').encode()

#邮件正文 msg.attach(MIMEText('send with file...','plain','utf-8'))

#添加附件就是加上一个MIMEBase,从本地读取一个图片: with open('/F/Python/123.jpg','rb') as f:

#设置福建的MIME和文件名,这里是jpg类型
mime=MIMEBase('image','jpg',filename='123.jpg')
#加上必要的头信息
mime.add_header('Content-Disposition','attachment',filename='123.jpg')
mime.add_header('Content-ID','<0>')
mime.add_header('X-Attachment-Id','0')
#把附件的内容读进来
mime.set_payload(f.read())
#用Base64编码
encoders.encode_base64(mime)
#添加到MIMEMultipart
msg.attach(mime)

server = smtplib.SMTP(smtp_server, 25) server.set_debuglevel(1) server.login(from_addr, password) server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit()

from email.mime.multipart import MIMEMultipart 
from email.mime.base import MIMEBase
from email import encoders

加上这几个库就行了


  • 1

Reply