import os import smtplib from email import encoders from email.header import Header from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MAIL_SERVER_HOST = 'smtp.exmail.qq.com' MAIL_SERVER_PORT = 25 TIME_OUT = 50 class MailSender: def __init__(self, sender, pwd): self.sender = sender self.pwd = pwd self.server = smtplib.SMTP(timeout=TIME_OUT) self.server.debuglevel = 0 self.server.connect(host=MAIL_SERVER_HOST, port=MAIL_SERVER_PORT,) self.server.login(self.sender, self.pwd) def close(self): self.server.close() def send(self, to_addrs, subject, content, file_list=[]): msg = MIMEMultipart() for att_file in file_list: att = MIMEBase('application', 'octet-stream') att.set_payload(open(att_file, 'rb').read()) encoders.encode_base64(att) att.add_header('Content-Disposition', 'attachment', filename=Header(os.path.basename(att_file), 'utf-8').encode()) msg.attach(att) msg['Subject'] = Header(subject, 'utf-8') msg['From'] = self.sender msg['To'] = ','.join(to_addrs) content = u'Hi:<br><br>' + \ content + \ u'<br><br>祝好!<br><br><br>本邮件为系统自动发送,请勿直接回复!<hr>' msg.attach(MIMEText(content.encode('utf-8'), 'html', 'utf-8')) self.server.sendmail(self.sender, to_addrs, msg.as_string()) # smtplib.SMTPServerDisconnected # if __name__ == '__main__': # mail_sender = MailSender() # mail_sender.send(['1304057458@qq.com'], 'hello', 'world.', []) # mail_sender.close()