can read mails and send appointment request
This commit is contained in:
@@ -87,6 +87,7 @@ class MongoDbManager:
|
||||
collection_to_use = self.db[LINKS_TO_VALIDATE]
|
||||
updated_at = time.strftime("%H:%M:%S", time.localtime())
|
||||
_ip_country = "FR"
|
||||
serial = "requests"
|
||||
# find ip_country info
|
||||
for _contact in _all_contact_list:
|
||||
if _contact.mail == mail_address:
|
||||
@@ -96,6 +97,7 @@ class MongoDbManager:
|
||||
collection_to_use.replace_one(filter={'_id': mail_address, }, replacement={
|
||||
u'url': link,
|
||||
u'email': mail_address,
|
||||
u'serial': serial,
|
||||
u'ip_country': _ip_country,
|
||||
"updated_at": updated_at
|
||||
},
|
||||
@@ -103,6 +105,7 @@ class MongoDbManager:
|
||||
else:
|
||||
collection_to_use.replace_one(filter={'_id': link, }, replacement={
|
||||
u'url': link,
|
||||
u'serial': serial,
|
||||
u'ip_country': _ip_country,
|
||||
"updated_at": updated_at
|
||||
},
|
||||
|
||||
+36
-18
@@ -86,47 +86,65 @@ def create_imap(login: str):
|
||||
if DOMAIN_163 in login:
|
||||
imap = IMAPClient(IMAP_SERVER_163, use_uid=True)
|
||||
elif DOMAIN_YAHOO in login:
|
||||
imap = imaplib.IMAP4_SSL(YAHOO_IMAP_SERVER)
|
||||
# imap = imaplib.IMAP4_SSL(YAHOO_IMAP_SERVER)
|
||||
imap = IMAPClient(YAHOO_IMAP_SERVER, use_uid=True)
|
||||
elif DOMAIN_FIREMAIL_DE in login:
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_FIREMAIL_DE)
|
||||
imap = IMAPClient(SERVER_FIREMAIL_DE, use_uid=True)
|
||||
elif DOMAIN_GMX in login or DOMAIN_GMX_FR in login or DOMAIN_GMX_US in login or DOMAIN_GMX_CH in login or DOMAIN_GMX_PT in login or DOMAIN_GMX_SG in login:
|
||||
imap = imaplib.IMAP4_SSL(SERVER_GMX)
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_GMX)
|
||||
imap = IMAPClient(SERVER_GMX, use_uid=True)
|
||||
elif DOMAIN_SINA in login:
|
||||
# imap = imaplib.IMAP4_SSL(IMAP_SERVER_SINA)
|
||||
imap = IMAPClient(IMAP_SERVER_SINA, use_uid=True)
|
||||
elif DOMAIN_HOTMAIL in login or DOMAIN_OUTLOOK_COM in login:
|
||||
imap = imaplib.IMAP4_SSL(HOTMAIL_IMAP_SERVER)
|
||||
# imap = imaplib.IMAP4_SSL(HOTMAIL_IMAP_SERVER)
|
||||
imap = IMAPClient(HOTMAIL_IMAP_SERVER, use_uid=True)
|
||||
elif DOMAIN_RAMBLER_RU in login:
|
||||
imap = imaplib.IMAP4_SSL(RAMBLER_IMAP_SERVER)
|
||||
# imap = imaplib.IMAP4_SSL(RAMBLER_IMAP_SERVER)
|
||||
imap = IMAPClient(RAMBLER_IMAP_SERVER, use_uid=True)
|
||||
elif DOMAN_BTVM_NE_JP in login:
|
||||
imap = imaplib.IMAP4_SSL(BTVM_NE_JP)
|
||||
# imap = imaplib.IMAP4_SSL(BTVM_NE_JP)
|
||||
imap = IMAPClient(BTVM_NE_JP, use_uid=True)
|
||||
elif DOMAN_GMAIL in login:
|
||||
imap = imaplib.IMAP4_SSL(SEREVER_GMAIL, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(SEREVER_GMAIL, port=993)
|
||||
imap = IMAPClient(SEREVER_GMAIL, use_uid=True)
|
||||
elif DOMAIN_ONET in login:
|
||||
imap = IMAPClient(SERVER_IMAGE_ONET, use_uid=True)
|
||||
elif DOMAIN_TIM_IT in login:
|
||||
imap = imaplib.IMAP4(TIME_IT_SERVER)
|
||||
# imap = imaplib.IMAP4(TIME_IT_SERVER)
|
||||
imap = IMAPClient(TIME_IT_SERVER, use_uid=True)
|
||||
elif DOMAIN_ALICE_IT in login:
|
||||
imap = imaplib.IMAP4(ALICE_IMAP_SERVER, port=143)
|
||||
# imap = imaplib.IMAP4(ALICE_IMAP_SERVER, port=143)
|
||||
imap = IMAPClient(ALICE_IMAP_SERVER, use_uid=True)
|
||||
elif DOMAIN_MARS_DTI_NE_JP in login:
|
||||
imap = imaplib.IMAP4(MARS_DTI_NE_JP_SERVER, port=143)
|
||||
# imap = imaplib.IMAP4(MARS_DTI_NE_JP_SERVER, port=143)
|
||||
imap = IMAPClient(MARS_DTI_NE_JP_SERVER, use_uid=True)
|
||||
elif DOMAN_AURORA_DTI_NE_JP in login:
|
||||
imap = imaplib.IMAP4(MARS_DTI_NE_JP_SERVER, port=143)
|
||||
# imap = imaplib.IMAP4(MARS_DTI_NE_JP_SERVER, port=143)
|
||||
imap = IMAPClient(MARS_DTI_NE_JP_SERVER, use_uid=True)
|
||||
elif DOMAIN_NAVER in login:
|
||||
imap = imaplib.IMAP4_SSL(NAVER_SERVER, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(NAVER_SERVER, port=993)
|
||||
imap = IMAPClient(NAVER_SERVER, use_uid=True)
|
||||
elif DOMAIN_GMX_DE in login or DOMAIN_GMX_NET in login:
|
||||
imap = imaplib.IMAP4_SSL(SERVER_GMX_NET, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_GMX_NET, port=993)
|
||||
imap = IMAPClient(SERVER_GMX_NET, use_uid=True)
|
||||
elif DOMAIN_GMX_AT in login:
|
||||
imap = imaplib.IMAP4_SSL(SERVER_GMX_AT, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_GMX_AT, port=993)
|
||||
imap = IMAPClient(SERVER_GMX_AT, use_uid=True)
|
||||
elif DOMAIN_GAZETA_PL in login:
|
||||
imap = imaplib.IMAP4_SSL(IMAP_SERVER_DOMAIN_GAZETA_PL, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(IMAP_SERVER_DOMAIN_GAZETA_PL, port=993)
|
||||
imap = IMAPClient(IMAP_SERVER_DOMAIN_GAZETA_PL, use_uid=True)
|
||||
elif DOMAIN_INBOX_LV in login:
|
||||
imap = imaplib.IMAP4_SSL(INBOX_LV, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(INBOX_LV, port=993)
|
||||
imap = IMAPClient(INBOX_LV, use_uid=True)
|
||||
elif DOMAIN_WEB_DE in login:
|
||||
imap = imaplib.IMAP4_SSL(SERVER_WEB_DE, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_WEB_DE, port=993)
|
||||
imap = IMAPClient(SERVER_WEB_DE, use_uid=True)
|
||||
elif DOMAIN_PISS_MAIL in login or DOMAIN_CHILD_PIZZA in login or DOMAIN_DMC_CHAT in login or DOMAIN_GENOCIDE_FUN in login or DOMAIN_HATESJE_WS in login or DOMAIN_INCEL_EMAIL in login or DOMAIN_SHITPOSTING_EXPERT in login:
|
||||
imap = imaplib.IMAP4_SSL(SERVER_PISS_MAIL, port=993)
|
||||
# imap = imaplib.IMAP4_SSL(SERVER_PISS_MAIL, port=993)
|
||||
imap = IMAPClient(SERVER_PISS_MAIL, use_uid=True)
|
||||
else:
|
||||
imap = imaplib.IMAP4_SSL(AOL_IMAP_SERVER)
|
||||
# imap = imaplib.IMAP4_SSL(AOL_IMAP_SERVER)
|
||||
imap = IMAPClient(AOL_IMAP_SERVER, use_uid=True)
|
||||
return imap
|
||||
|
||||
@@ -9,6 +9,7 @@ from email.message import Message
|
||||
|
||||
from imapclient import IMAPClient
|
||||
from db.mongo_manager import MONGO_STORE_MANAGER
|
||||
from excel_reader import read_contacts
|
||||
from mail.mail_constants import DOMAIN_HOTMAIL, create_imap
|
||||
from models.mail_pojo import MailPojo, MailAddress
|
||||
|
||||
@@ -179,7 +180,7 @@ class MailReader():
|
||||
body = body + part.get_payload(decode=True).decode("utf-8")
|
||||
elif part.get_content_type() == "text/plain":
|
||||
body = body + part.get_payload()
|
||||
if VALIDATION_URL_SUBJECT_fr in subject or VALIDATION_URL_SUBJECT_EN in subject or "Validation=20de=20votre=20demande=20de=20rendez-vous" in subject:
|
||||
if VALIDATION_URL_SUBJECT_fr in subject or VALIDATION_URL_SUBJECT_EN in subject or "Votre=20demande=20de=20rendez-vous" in subject:
|
||||
mail = MailPojo(subject=subject, body=body, from_address=from_address)
|
||||
mail.isImapClient = True
|
||||
print("email is {}".format(self.login))
|
||||
@@ -262,7 +263,39 @@ def find_links_to_validate_from_mail_list(mail_list: list, logger):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
mail_address1 = MailAddress(mail="tzfhygwwjiwnf@hotmail.com", password="rqO4Pjm7NQ")
|
||||
mail_list = [mail_address1]
|
||||
# mail_address1 = MailAddress(mail="tinagonzales685585@aol.com", password="yhihvdkrbxnksema")
|
||||
# mail_list = [mail_address1]
|
||||
contact_to_book_list = read_contacts(
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-01-16_yahoo_100.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/extracted_yahoo_contacts_129_24_03_win.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-04-02.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/17_18_04_to_test_win.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/real_name_contacts_200_aol_win.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/real_name_contacts_200_aol_mac.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/real_name_contacts_500_27_03_25_fixed_mac.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-04-05.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/real_name_contacts_400_aol_mac.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-04-07.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-04-05.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/real_name_contacts_92_gmx_sg_win.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_not_used_contacts.xlsx")
|
||||
# file_name="/Users/lpan/Desktop/contact_list_2025-06-07.xlsx")
|
||||
file_name="/Users/lpan/Desktop/contact_list_2025-06-09_2.xlsx")
|
||||
all_mail_list = MONGO_STORE_MANAGER.get_destination_emails()
|
||||
mail_list_to_check = []
|
||||
for contact in contact_to_book_list:
|
||||
for mail in all_mail_list:
|
||||
if contact.mail == mail.mail:
|
||||
mail_list_to_check.append(mail)
|
||||
logger = logging.getLogger()
|
||||
find_links_to_validate_from_mail_list(mail_list, logger)
|
||||
_all_links = MONGO_STORE_MANAGER.get_links_to_validate()
|
||||
filter_mail = []
|
||||
for mail_pojo in mail_list_to_check:
|
||||
_to_add = True
|
||||
for _link in _all_links:
|
||||
if _link.email == mail_pojo.mail:
|
||||
_to_add = False
|
||||
if _to_add:
|
||||
filter_mail.append(mail_pojo)
|
||||
|
||||
find_links_to_validate_from_mail_list(filter_mail, logger)
|
||||
|
||||
@@ -3,6 +3,6 @@ from queue_message.CookiesPublisher import MORNING_DATA_CACHE_2, MORNING_DATA_CA
|
||||
from workers.MessagerTransporter import migrate_message_to_queue, empty_message_just_to
|
||||
|
||||
if __name__ == '__main__':
|
||||
migrate_message_to_queue(from_queue=MORNING_DATA_CACHE_BAK, to_queue=MORNING_DATA_CACHE)
|
||||
migrate_message_to_queue(from_queue=MORNING_DATA_CACHE, to_queue=MORNING_DATA_CACHE_BAK)
|
||||
# empty_message_just_to(2000, queue_name=MORNING_DATA_CACHE_BAK)
|
||||
# migrate_message_to_queue(from_queue=MORNING_DATA_CACHE_BAK,to_queue=REQUEST_DATA_QUEUE_DE)
|
||||
|
||||
+3
-1
@@ -11,7 +11,9 @@ class LinkPojo():
|
||||
def from_firestore_dict(source):
|
||||
updated_at = source['updated_at']
|
||||
email = source['email']
|
||||
model = source['model']
|
||||
model = ""
|
||||
if 'model' in source:
|
||||
model = source['model']
|
||||
serial = source['serial']
|
||||
url = source['url']
|
||||
ip_country = "FR"
|
||||
|
||||
@@ -239,6 +239,7 @@ class AppointmentRequestSender(threading.Thread):
|
||||
self.channel.start_consuming()
|
||||
|
||||
def retrieve_invalidate_urls(self):
|
||||
self.list_to_retrieve_mails = self.initial_contact_list
|
||||
# 如果没有已读邮件,而且需要读邮件的联系人表不为空,就读取未读邮件
|
||||
if not self.already_read_emails and len(self.list_to_retrieve_mails) > 0:
|
||||
self.logger.info("will retrieve validate urls")
|
||||
|
||||
+3
-3
@@ -71,10 +71,10 @@ def send_appointment_request(message_queue_name, _contact_list):
|
||||
|
||||
def start_send_requests():
|
||||
print("start send requests")
|
||||
contacts_file_path = '~/Desktop/11_05_to_test.xlsx'
|
||||
_contact_list = read_contacts(contacts_file_path)[:-1]
|
||||
contacts_file_path = '~/Desktop/06_05_to_test.xlsx'
|
||||
_contact_list = read_contacts(contacts_file_path)[:1]
|
||||
_contact_list_to_book = filter_contacts(_contact_list)
|
||||
_segment_number = 5
|
||||
_segment_number = 1
|
||||
logger.info("{} contacts to book".format(len(_contact_list_to_book)))
|
||||
last_thread = None
|
||||
for i in range(0, _segment_number):
|
||||
|
||||
@@ -103,6 +103,6 @@ if __name__ == '__main__':
|
||||
# '~/Desktop/contact_list_2024-05-21.xlsx',
|
||||
# '~/Desktop/15_05_to_test.xlsx']
|
||||
# file_list = ['~/Desktop/15_05_to_test.xlsx', '~/Desktop/16_05_to_test.xlsx']
|
||||
file_list = ['~/Desktop/contact_list_2024-10-05_gmx_net_100.xlsx']
|
||||
send_request_for_file_list(file_list=file_list, thread_number=1,
|
||||
file_list = ['~/Desktop/contact_list_2025-06-09_2.xlsx']
|
||||
send_request_for_file_list(file_list=file_list, thread_number=10,
|
||||
data_queue_name=MORNING_DATA_CACHE, stop_at_hour=19, stop_at_mins=50)
|
||||
|
||||
@@ -28,7 +28,7 @@ logger = logging.getLogger()
|
||||
def filter_link_pojo_list_with_serial(_received_dict, link_to_validate_list):
|
||||
_serial = _received_dict["serial"]
|
||||
_model = _received_dict["model"]
|
||||
_bit_browser_list = list(filter(lambda link_pojo: link_pojo.serial == "bitbrowser", link_to_validate_list))
|
||||
_bit_browser_list = list(filter(lambda link_pojo: link_pojo.serial == "requests", link_to_validate_list))
|
||||
if len(_bit_browser_list) > 0:
|
||||
return _bit_browser_list
|
||||
else:
|
||||
@@ -210,12 +210,18 @@ def validate_links(cookiesPublisher, queue_name: str, link_list: list, _contact_
|
||||
def validate_all_links(_contact_serial_list):
|
||||
print("will get all links")
|
||||
all_link_list = MONGO_STORE_MANAGER.get_links_to_validate()
|
||||
link_to_validated = []
|
||||
for _link in all_link_list:
|
||||
# print("serial is "+_link.serial)
|
||||
print("email is "+_link.email)
|
||||
if _link.serial == "requests":
|
||||
link_to_validated.append(_link)
|
||||
# get the first 50 links
|
||||
if len(all_link_list) == 0:
|
||||
if len(link_to_validated) == 0:
|
||||
return
|
||||
# divided = 1
|
||||
divided = 2
|
||||
# default_segment_number = 20
|
||||
# _first_25_percent_links = all_link_list[0:(int(len(all_link_list) / divided))]
|
||||
_first_25_percent_links = link_to_validated[0:(int(len(all_link_list) / divided))]
|
||||
_first_25_percent_links = all_link_list
|
||||
_queue_name = MORNING_DATA_CACHE
|
||||
# _queue_name = MORNING_DATA_CACHE_BAK
|
||||
|
||||
+1
-1
@@ -160,7 +160,7 @@ class Sender:
|
||||
headers['sec-ch-ua-full-version-list'] = _chrome_ua_version
|
||||
data = {'check': '', '_csrf': _csrf, 'prefer': _selected_store,
|
||||
'surname': contact.last_name.capitalize(), 'name': contact.first_name.capitalize(),
|
||||
'phone_country': "FR", 'phone_number': "+33 " + contact.phone, 'email': contact.mail,
|
||||
'phone_country': "FR", 'phone_number': "0" + contact.phone, 'email': contact.mail,
|
||||
'passport_id': contact.passport, 'processing': 'on', 'cgu': 'on'}
|
||||
self.logger.info(data)
|
||||
self.logger.info("try to request for mail:{}".format(contact.mail))
|
||||
|
||||
Reference in New Issue
Block a user