Advertisement
Guest User

Untitled

a guest
Jun 15th, 2018
500
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. #  -*- coding: utf-8 -*-
  2. import requests
  3. from mechanicalsoup import StatefulBrowser
  4. import bs4 as bs
  5. import smtplib
  6. import time
  7.  
  8.  
  9.  
  10.  
  11. class EkontoMail:
  12.     url = 'https://elogin.put.poznan.pl/email/index.php'
  13.     url2 = 'https://poczta.student.put.poznan.pl/zimbra/h/search?mesg=welcome&init=true'
  14.  
  15.     def __init__(self,user_name, user_password):
  16.         self.user_name = user_name
  17.         self.user_password = user_password
  18.         self.browser = StatefulBrowser()
  19.         self.old_messages = self.get_recent_mails_links()
  20.  
  21.  
  22.  
  23.     def get_recent_mails_links(self):
  24.         self.browser.open(self.url)
  25.         self.browser.select_form('form[action="index.php"]')
  26.         self.browser['user_name']=self.user_name
  27.         self.browser['user_password']=self.user_password
  28.         self.browser.submit_selected()
  29.         self.response = self.browser.open(self.url2)
  30.         index = bs.BeautifulSoup(self.response.text, "lxml")
  31.         messages = index.tbody.find_all('a')
  32.  
  33.  
  34.         return messages
  35.  
  36.  
  37.     def check_if_new_messages(self):
  38.         new_links = self.get_recent_mails_links()
  39.  
  40.         if new_links[0] != self.old_messages[0]:
  41.             return True
  42.         else:
  43.             return False
  44.  
  45.     def format_messages(self, messages):
  46.         formated_messages = []
  47.         for message in messages:
  48.             message_link = message.get('href')
  49.             basic_url = 'https://poczta.student.put.poznan.pl/zimbra/h/search?'
  50.  
  51.             message_page = self.browser.open(basic_url + message_link)
  52.             message_page = bs.BeautifulSoup(message_page.text, "lxml")
  53.             message_values = message_page.find_all('td', class_='MsgHdrValue')
  54.  
  55.             name = message_values[0].get_text(strip=True)
  56.  
  57.             title = message_values[1].get_text(strip=True)
  58.  
  59.             message_body = message_page.find('td', id='iframeBody')
  60.             message_text = [str(i).strip() for i in message_body.contents]
  61.             print(name, title, message_text)
  62.             formated_messages.append([name, title, message_text])
  63.  
  64.         return formated_messages
  65.  
  66.  
  67.     def save_to_file(self, formated_messages):
  68.        
  69.         for formated_message in formated_messages:
  70.             name, title, message_text = formated_message
  71.             name_stripped = ''
  72.             for letter in name:
  73.                 if letter == '<' or '':
  74.                     break
  75.  
  76.             save_list = [name + '\n', title] + message_text
  77.  
  78.             with open("siemanko\{}.txt".format(name_stripped),
  79.                       mode='w', encoding='utf-8') as f:
  80.                 f.writelines(save_list)
  81.  
  82.  
  83. values = {
  84.     'user_name': 'mateusz.m.klaczynski@student.put.poznan.pl',
  85.     'user_password': 'PAssword12',
  86.     # 'cstfmiddlewaretoken':csrf_token
  87. }
  88. konto = EkontoMail(values['user_name'], values['user_password'])
  89. while True:
  90.     if konto.check_if_new_messages():
  91.         mails = konto.get_recent_mails_links()
  92.         mails = konto.format_messages(mails)
  93.         konto.save_to_file(mails)
  94.         print("Nowa wiadomość")
  95.     time.sleep(1000)
  96.  
  97.  
  98.  
  99. gmail_username = 'onufryklaczynski@gmail.com'
  100. gmail_password = 'mathiu90'
  101. # try:
  102. #     server = smtplib.SMTP_SSL('smtp.gmail.com')
  103. #     server.ehlo()
  104. #     server.login(gmail_username,gmail_password)
  105. #     server.sendmail(gmail_username, gmail_username, 'siemanko')
  106. # except:
  107. #     print("smth went wrong")
  108. #
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement