1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| from email.mime.application import MIMEApplication from smtplib import SMTP_SSL import smtplib
class MailControl(object): def __init__(self,mail_host,mail_user,mail_pass,mail_name): self.mail_host=mail_host self.mail_user=mail_user self.mail_pass=mail_pass self.mail_name=mail_name
def login(self): ''' 登录邮箱 :return: ''' self.server = smtplib.SMTP(host=self.mail_host, port="587") self.server.ehlo() self.server.starttls() self.server.login(self.mail_user, self.mail_pass)
def send(self,msg:MIMEMultipart,to_addr): ''' :param to_addr:客户地址 :param msg:消息体 :return: ''' return self.server.send_message(from_addr=self.mail_user,to_addrs=to_addr,msg=msg)
def quit(self): ''' 退出邮箱 :return: ''' self.server.quit()
def createHeader(self,title,To:list,CC:list,BCC:list): ''' 创建标题 :param title: :param To: :param CC: :param BCC: :return: ''' msg = MIMEMultipart() msg['From'] = Header(self.mail_name, 'utf-8') msg['To'] = Header(','.join(To), 'utf-8') if len(CC)>0: msg['CC'] = Header(','.join(CC), 'utf-8') if len(BCC)>0: msg['BCC'] = Header(','.join(BCC), 'utf-8') msg['Subject'] = Header('%s' % title, 'utf-8') return msg
def addContent(self,msg:MIMEMultipart,content,msgType="plain"): msg.attach(MIMEText(content,msgType, 'utf-8')) return msg
def addAttach(self,msg:MIMEMultipart,fileName): '''
:param msg: :param fileName: 文件名 :return: ''' apart = MIMEApplication(open(' attachment/'+fileName, 'rb').read()) apart.add_header('Content-Disposition', 'attachment', filename=fileName) msg.attach(apart) return msg
def addSignature(self,msg:MIMEMultipart,name:str,sendCon:str): ''' :param msg: :param name: :return: ''' with open(file="mailSignature/"+name+".htm",encoding="utf-8") as file: content=file.read().replace("{{正文}}",sendCon) self.addContent(msg,content,"html") return msg
|