| 
 import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header from email import encoders from email.mime.base import MIMEBase from email.utils import parseaddr, formataddr  
# 格式化邮件地址 def formatAddr(s):     name, addr = parseaddr(s)     return formataddr((Header(name, 'utf-8').encode(), addr))  
def sendMail(body, attachment):     account_password = 'VCGXTBHXFPVDVLGZ'  
    # 构造一个MIMEMultipart对象代表邮件本身     msg = MIMEMultipart()     # Header对中文进行转码     msg['From'] = formatAddr('管理员 <%s>' % email_account)     msg['To'] = ','.join(to_mail)     msg['Subject'] = Header('监控', 'utf-8')  
    # plain代表纯文本     msg.attach(MIMEText(body, 'plain', 'utf-8'))  
    # 二进制方式模式文件     with open(attachment, 'rb') as f:         # MIMEBase表示附件的对象         mime = MIMEBase('text', 'txt', filename=attachment) # 使用MIMEBase类构造附件并添加到msg对象         # filename是显示附件名字         mime.add_header('Content-Disposition', 'attachment', filename=attachment)         # 获取附件内容         mime.set_payload(f.read())         encoders.encode_base64(mime)         # 作为附件添加到邮件         msg.attach(mime)     try:         s = smtplib.SMTP()         s.connect(smtp_server, "25")         s.login(email_account, account_password)         s.sendmail(email_account, to_mail, msg.as_string())  # as_string()把MIMEText对象变成str         s.quit()     except smtplib.SMTPException as e:         print("Error: %s" % e) if __name__ == "__main__":     sendMail('这是一封携带附件的测试邮件', 'test.txt')  
file:///C:/Users/marco/AppData/Local/Temp/enhtmlclip/Image.png ![]()  |