# coding=utf-8 import smtplib import os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart class MyEmail: def __init__(self): self.user = None self.passwd = None self.to_list = [] self.cc_list = [] self.tag = None self.doc = None self.txt = None def send(self): """ 发送邮件 """ try: server = smtplib.SMTP_SSL("smtp.exmail.qq.com", port=465) server.login(self.user, self.passwd) server.sendmail( "<%s>" % self.user, self.to_list + self.cc_list, self.get_attach() ) server.close() print("send email successful") except Exception: print("send email failed") def get_attach(self): """ 构造邮件内容 """ attach = MIMEMultipart() # 添加邮件内容 txt = MIMEText(self.txt) attach.attach(txt) if self.tag is not None: # 主题,最上面的一行 attach["Subject"] = self.tag if self.user is not None: # 显示在发件人 attach["From"] = "Chat<%s>" % self.user if self.to_list: # 收件人列表 attach["To"] = ";".join(self.to_list) if self.cc_list: # 抄送列表 attach["Cc"] = ";".join(self.cc_list) if self.doc: # 估计任何文件都可以用base64,比如rar等 # 文件名汉字用gbk编码代替 name = os.path.basename(self.doc).encode("gbk") f = open(self.doc, "rb") doc = MIMEText(f.read(), "base64", "gb2312") doc["Content-Type"] = "application/octet-stream" doc["Content-Disposition"] = 'attachment; filename="' + name + '"' attach.attach(doc) f.close() return attach.as_string() if __name__ == "__main__": my = MyEmail() my.user = "lizhen@huggingprompt.com" my.passwd = "todo" my.to_list = ["hisansui@gmail.com"] my.tag = "Chat注册验证码" my.txt = "【123456】Chat邮箱注册验证码,您正在注册Chat账号,请勿泄露。" my.send()