123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # Python 3.8.0
- import smtplib
- import time
- import imaplib
- import email
- import traceback
- import datetime
- import re
- import mysql.connector
- from mysql.connector import Error
- # -------------------------------------------------
- #
- # Utility to read email from Gmail Using Python
- #
- # ------------------------------------------------
- def XoopsExecuteQuery(isql):
- connection = mysql.connector.connect(
- host='hhh-v57.cmab1ctkglka.ap-northeast-2.rds.amazonaws.com',
- database='xoops',
- user='hhh7796hhh',
- password='lYmWsu^ujcA1'
- )
- cursor = connection.cursor(dictionary=True)
- cursor.execute(isql)
- if cursor.rowcount == -1:
- return cursor.fetchall()
- else:
- connection.commit()
- return cursor.rowcount
- def EdmExecuteQuery(isql):
- connection = mysql.connector.connect(
- host='edm.hhh.com.tw',
- database='hhh_edm',
- user='root',
- password='bimbothin'
- )
- cursor = connection.cursor(dictionary=True)
- cursor.execute(isql)
- if cursor.rowcount == -1:
- return cursor.fetchall()
- else:
- connection.commit()
- return cursor.rowcount
- ORG_EMAIL = "noreply@hhh.com.tw"
- FROM_EMAIL = "noreply@hhh.com.tw"
- FROM_PWD = "Hhhn0123"
- SMTP_SERVER = "outlook.office365.com"
- SMTP_PORT = 993
- mail = imaplib.IMAP4_SSL('outlook.office365.com')
- mail.login(FROM_EMAIL, FROM_PWD)
- """ for folder in mail.list():
- print(folder) """
- mail.select('Inbox')
- result, data = mail.uid('search', None, "ALL") # (ALL/UNSEEN)
- i = len(data[0].split())
- print(i)
- for x in range(i):
- latest_email_uid = data[0].split()[x]
- result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
- # result, email_data = conn.store(num,'-FLAGS','\\Seen')
- # this might work to set flag to seen, if it doesn't already
- raw_email = email_data[0][1]
- raw_email_string = raw_email.decode('ISO-8859-1')
- email_message = email.message_from_string(raw_email_string)
- # Header Details
- date_tuple = email.utils.parsedate_tz(email_message['Date'])
- if date_tuple:
- local_date = datetime.datetime.fromtimestamp(
- email.utils.mktime_tz(date_tuple))
- local_message_date = "%s" % (
- str(local_date.strftime("%a, %d %b %Y %H:%M:%S")))
- email_from = str(email.header.make_header(
- email.header.decode_header(email_message['From'])))
- email_to = str(email.header.make_header(
- email.header.decode_header(email_message['To'])))
- try:
- subject = str(email.header.make_header(
- email.header.decode_header(email_message['Subject'])))
- except:
- subject = ""
- lst = re.findall(r'To: [\w.+-]+@[\w-]+\.[\w.-]+', raw_email.decode('UTF-8'))
-
- if local_date + datetime.timedelta(days=8) > datetime.datetime.now():
- if email_from.find('complaint') >= 0:
- #print(local_date)
- print(lst)
- if len(lst) > 0:
- XoopsExecuteQuery("update _users set email_status='B' where email='"+ lst[0].replace('To: ','') +"'")
- XoopsExecuteQuery("update _hnewspaper set onoff='0' where email='"+ lst[0].replace('To: ','') +"'")
- EdmExecuteQuery("delete from subscriber where email='"+ lst[0].replace('To: ','') +"'")
- EdmExecuteQuery("delete from subscriber_for_all where email='"+ lst[0].replace('To: ','') +"'")
- if email_from.lower() == 'mailer-daemon@amazonses.com':
- print(lst)
- if len(lst) > 0:
- XoopsExecuteQuery("update _users set email_status='B' where email='"+ lst[0].replace('To: ','') +"'")
- XoopsExecuteQuery("update _hnewspaper set onoff='0' where email='"+ lst[0].replace('To: ','') +"'")
- EdmExecuteQuery("delete from subscriber where email='"+ lst[0].replace('To: ','') +"'")
- EdmExecuteQuery("delete from subscriber_for_all where email='"+ lst[0].replace('To: ','') +"'")
- """ if x == i-2:
- print(raw_email.decode('UTF-8')) """
- #print(email_from)
- #print(email_from)
- # Body details
- """ for part in email_message.walk():
- if part.get_content_type() == "text/plain":
- # if subject == 'complaint':
- body = part.get_payload(decode=True)
- # print(email_from)
- try:
- dbody = body.decode('UTF-8')
- except:
- dbody = body.decode('ISO-8859-1')
- #lst = re.search(r'[\w.+-]+@[\w-]+\.[\w.-]+', raw_email.decode('utf-8'))
- lst = re.findall(r'[\w.+-]+@[\w-]+\.[\w.-]+', dbody)
- print(email_from)
- if len(lst) > 0 and email_from == "complaints@email-abuse.amazonses.com":
- if XoopsExecuteQuery("update _users set email_status='B' where email='"+ lst[0] +"'") > 0:
- print(lst[0])
- XoopsExecuteQuery("update _hnewspaper set onoff='0' where email='"+ lst[0] +"'")
- EdmExecuteQuery("delete from subscriber where email='"+ lst[0] +"'")
- EdmExecuteQuery("delete from subscriber_for_all where email='"+ lst[0] +"'")
- print(lst[0])
- if x == i-2:
- print(subject)
- print(email_from)
- else:
- continue """
|