自动化测试中各种流量的模拟5-邮件篇

xiaoxiao2021-02-27  263

1、先 贴上代码,以后再写内容

ef build_mail(mailfrom,mailto,subject,mymsg): #构建要发送的邮件的正文 msg=MIMEText(mymsg,'plain','utf-8') msg['From']=mailfrom msg['To']=mailto msg['Subject']=subject return msg def build_mailattach(mailfrom,mailto,subject,mymsg,attachpath,attachtype): #构建邮件内容,包含附件的 msg = email.MIMEMultipart.MIMEMultipart() msg['From'] = mailfrom msg['To'] = mailto msg['Subject'] = subject msg.attach(MIMEText(mymsg, 'plain', 'utf-8')) with open(attachpath, 'rb') as f: maintype,subtype=attachtype.split('/',1) mime = email.MIMEBase.MIMEBase(maintype,subtype) mime.set_payload(f.read()) f.close() email.Encoders.encode_base64(mime) attach=attachpath.split('/') attachname=attach[len(attach)-1] attachname=os.path.basename(attachname) mime.add_header('Content-Disposition','attachment',filename=attachname) msg.attach(mime) return msg def build_mailto(name1,name2): mailto=[] mailto.append(name1) mailto.append(name2) return mailto def build_mail_cc(mailfrom,mailto,cc,subject,mymsg): msg = MIMEText(mymsg, 'plain', 'utf-8') msg['From'] = mailfrom msg['To'] = mailto msg['Subject'] = subject msg['Cc']=cc return msg def smtp_send(smtphost,user,pwd,mailto,msg): #发送smtp邮件 mysmtp=smtplib.SMTP() mysmtp.connect(smtphost) mysmtp.login(user,pwd) mysmtp.sendmail(user,mailto,msg.as_string()) mysmtp.close() def smtp_send_ssl(smtphost,user,pwd,mailto,msg): #目前公司的默认ssl发送端口465没有开,可能没有ssl的发送 mysmtp=smtplib.SMTP_SSL() mysmtp.connect(smtphost) mysmtp.login(user,pwd) mysmtp.sendmail(user,mailto,msg.as_string()) mysmtp.close() def imap_recv(imap_url,username,password,email_num): #对于邮件的接受同样要用账号密码,返回来一个邮件号码的列表,以后要改成按时间顺序倒叙的,要不用例没法写 conn=imaplib.IMAP4(imap_url) #现在已经改成时间倒叙的了 conn.login(username,password) print conn.list() status,count=conn.select() print 'the number of email is :' print count num=int(count[0]) status,data=conn.fetch(num-email_num+1,'RFC822') #对于需要下载的邮件可以用fetch函数讲邮件下载到本地,注意下载的是标准的mime编码文件,需要进行解码 email_content= 'pring email content:'+data[0][1] msg=email.message_from_string(email_content) print email_content conn.logout() return email_content def imap_recv_ssl(imap_url,username,password,email_num): #只是换了一个函数,内部变化不管 conn=imaplib.IMAP4_SSL(imap_url) conn.login(username,password) print conn.list() status,count=conn.select() print 'the number of email is :' print count status,data=conn.fetch(email_num,'RFC822') email_content= 'pring email content:'+data[0][1] # print email_content conn.logout() return email_content def pop3_recv(pop_url,username,password,email_num): conn = poplib.POP3(pop_url) conn.user(username) conn.pass_(password) count = conn.stat() print 'count is :',count num_str=str(count).replace('(','') num=num_str.split(',') resp,lines,octets=conn.retr(int(num[0])-email_num+1) email=b'\r\n'.join(lines) print email return email conn.quit() def pop3_recv_ssl(pop_url,username,password,email_num): conn = poplib.POP3_SSL(pop_url) conn.user(username) conn.pass_(password) count = conn.stat() print 'count is :', count num_str = str(count).replace('(', '') num = num_str.split(',') resp, lines, octets = conn.retr(int(num[0]) - email_num + 1) email = b'\r\n'.join(lines) print email return email conn.quit() def mail_save(filepath,filename,mime): #对于mime编码的邮件没有能够进行解码,直接保存成eml格式的文件用其他邮件软件打开就可以查看了 file=open(filepath+filename+'.eml','w') file.write(mime) file.close()
转载请注明原文地址: https://www.6miu.com/read-11053.html

最新回复(0)