import email import imaplib import re import smtplib from email.header import Header from email.mime.text import MIMEText from nntplib import decode_header from turtle import pd from boto3 import Session from imapclient import IMAPClient class NeteaseMail: # 连接邮箱服务器并登录。 def loginEmail(self, imap_server, from_addr, password, imap_port, isssl=True): '''第一部分:收件IMAP4********************************************''' '''登录邮箱IMAP4==========================================================''' email_server = None #993 465 try: email_server = IMAPClient(imap_server, ssl=isssl, port=imap_port) #email_server = imaplib.IMAP4_SSL(IMAP_SERVER, 993) # 网易企业邮箱服务器及SSL端口 print("imap4 服务器连接成功") email_server.login(from_addr, password) email_server.id_({"name": "IMAPClient", "version": "2.1.0"}) #email_server.login(FROM_ADDR, PASSWORD) print("imap4 账号密码正确,登录成功") except: print("imap4 服务器连接失败") else: return email_server #关闭邮箱服务器连接 def closeEmail(self, email_server): # 关闭select email_server.close() # 关闭连接 email_server.logout() #获取邮箱内容、标题、发件人 def getEmailContext(self, email_server): ''' 邮箱中收到的未读邮件的数量==========================================================''' #email_server.select_folder('INBOX', readonly=True) email_server.select_folder('INBOX', readonly=True) # readonly=True表明只读并不修改任何信息 results = email_server.search() subject_list = [] bodydata_list = [] from_list = [] try: for uid in results: msgdict = email_server.fetch(uid, ['Body[]','ENVELOPE'], '(RFC822)') mailbody = msgdict[uid][b'BODY[]'] envelope = msgdict[uid][b'ENVELOPE'] message = email.message_from_bytes(mailbody) msgfrom = message['from'] m_type = message.get('Content-Type') if m_type and 'text/html' in m_type: con3 = message.get_payload(decode=True).strip() subject = message['Subject'] subdecode = decode_header(subject) subject_list.append(subdecode) from_list.append(message['from']) bodydata_list.append(con3.decode('utf8')) except: print('获取内容出错') else: return subject_list, from_list, bodydata_list # if subject_list and bodydata_list: # data_unseen = [subject_list, bodydata_list] # data_unseen1 = pd.DataFrame(data_unseen) # data_unseen1.to_csv('data_unseen.csv', sep=',', header=True, index=True, encoding='utf_8_sig') # # aws_key = "ASIA2E67UIMDTJFRF7UE" # 【你的 aws_access_key】 # aws_secret = "5u6MDvm3Fabdbc6EG9+JPJE3x07peNkrvok76Dqq" # 【你的 aws_secret_key】 # aws_session_token = "FwoGZXIvYXdzEHQaDKQchZxanXOpNJ2UriLoARUmKF/Uf6HZMhB4Bdo1Df4BlirgpqOyXmMULjx1yvqah1+BKIV2rzEoxxaVmvjcvLjHMQamPR7QzLZYP/WgJ6biPTnfqJWy5rCVpIZtD3D2nmGWAf5RSedADILJgBQmrXumFX2jrnm6THbqfdyfT2eitKt5ZD82zvLOaHMWu7mzomzmye8Eimt28Dhj6jsLeZPxOhhHBLUi+gddHAMCQq8HmGbnsXN5OrOBvqreRAxdR/u6vuQHbVpV3b8V5nkAtTVhOCaGRcPETARB8F/jFuFRhW9tAjPZisP/SEa8vUDR32FoMNQeda4o5+7l/gUyKYlem5bIB96gywY6s4C8c1PAa3l09+5tdGNp5laAJf7vMUzMJckR2EgF" # session = Session(aws_access_key_id=aws_key, # aws_secret_access_key=aws_secret, # aws_session_token=aws_session_token, # region_name="ap-southeast-1") # 此处根据自己的 s3 地区位置改变 # s3 = session.resource("s3") # client = session.client("s3") # bucket = "asj-oct-ipc" # 【你 bucket 的名字】 # 首先需要保.证 s3 上已经存在该存储桶,否则报错 # upload_data = open("./././static/log/error.log", "rb") # upload_key = "86YC8Z192VB1VMKU111A/vod1/test" # file_obj = s3.Bucket(bucket).put_object(Key=upload_key, Body=upload_data) #发送邮箱 def faEmail(self,email_server,message,subject,from_addr,to_addr): if email_server: print("邮件开始发送") message = message msg = MIMEText(message, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = Header(from_addr) try: msg['To'] = Header(to_addr, 'utf-8') email_server.sendmail(from_addr, to_addr, msg.as_string()) # 将msg转化成string发出 print("邮件发送成功") except Exception as e: print('Error:', e) email_server.quit() # def sentemail(self,message,subject,from_addr,to_addr): # host = 'smtp.163.com' # # 设置发件服务器地址 # port = 465 # # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式,现在一般是SSL方式 # sender = FROM_ADDR # # 设置发件邮箱,一定要自己注册的邮箱 # pwd = PASSWORD # # 设置发件邮箱的授权码密码,根据163邮箱提示,登录第三方邮件客户端需要授权码 # receiver = to_addr # # 设置邮件接收人,可以是QQ邮箱 # body = message # # 设置邮件正文,这里是支持HTML的 # msg = MIMEText(body, 'html') # # 设置正文为符合邮件格式的HTML内容 # msg['subject'] = subject # # 设置邮件标题 # msg['from'] = from_addr # # 设置发送人 # msg['to'] = to_addr # # 设置接收人 # try: # s = smtplib.SMTP_SSL(host, port) # # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL # s.login(sender, pwd) # # 登陆邮箱 # s.sendmail(sender, receiver, msg.as_string()) # # 发送邮件! # print('Done.sent email success') # except smtplib.SMTPException: # print('Error.sent email fail') # mailto_list = ['xxxxxx@xx.com] # mail_host = "smtp.163.com" # mail_user = "xxxxxx" # mail_pass = "xxxxxxxxxx" # # def send_mail(mailto_list, sub, content,mail_user,mail_pass): # me = "hello" + "<" + mail_user + "@1368035>" # msg = MIMEText(content, _subtype='plain') # msg['Subject'] = sub # msg['From'] = me # try: # for mail in mailto_list: # msg['To'] = mail # server = smtplib.SMTP() # server.connect(mail_host) # server.login(mail_user, mail_pass) # server.sendmail(me, mail, msg.as_string()) # server.close() # del msg['To'] # return True # except Exception, e: # print # str(e) # return False