in ees_microsoft_outlook/microsoft_outlook_mails.py [0:0]
def get_mails(self, ids_list_mails, accounts, start_time, end_time):
"""This method is used to get documents of mails and mapped with Workplace Search fields
:param ids_list_mails: List of ids of documents
:param accounts: List of user accounts
:param start_time: Start time for fetching the mails
:param end_time: End time for fetching the mails
Returns:
documents: List of all types of mail documents
"""
documents = []
mail_type = [
{
"folder": "inbox",
"constant": constant.INBOX_MAIL_OBJECT,
},
{
"folder": "sent",
"constant": constant.SENT_MAIL_OBJECT,
},
{
"folder": "junk",
"constant": constant.JUNK_MAIL_OBJECT,
},
{
"folder": "archive",
"constant": constant.ARCHIVE_MAIL_OBJECT,
},
]
start_time = convert_datetime_to_ews_format(start_time)
end_time = convert_datetime_to_ews_format(end_time)
for account in accounts:
# Logic to set time zone according to user account
self.time_zone = account.default_timezone
try:
for type in mail_type:
# Logic to get mails folder
if "archive" in type["folder"]:
mail_type_obj_folder = (
account.root / "Top of Information Store" / "Archive"
)
else:
mail_type_obj_folder = getattr(account, type["folder"])
# Logic to fetch mails
mail_type_obj = (
mail_type_obj_folder.all()
.filter(
last_modified_time__gt=start_time,
last_modified_time__lt=end_time,
)
.only(
"sender",
"to_recipients",
"cc_recipients",
"bcc_recipients",
"last_modified_time",
"subject",
"importance",
"categories",
"body",
"has_attachments",
"attachments",
)
)
mail_type_documents = self.get_mail_documents(
account,
ids_list_mails,
type["constant"],
mail_type_obj,
start_time,
end_time,
)
documents.extend(mail_type_documents)
except requests.exceptions.RequestException as request_error:
raise requests.exceptions.RequestException(
f"Error while fetching mails data for {account.primary_smtp_address}. Error: {request_error}"
)
except Exception as exception:
self.logger.info(
f"Error while fetching mails data for {account.primary_smtp_address}. Error: {exception}"
)
pass
return list(unique_everseen(documents))