diff --git a/get.py b/get.py index 6c7d8d0..fcff540 100644 --- a/get.py +++ b/get.py @@ -19,16 +19,15 @@ imap_conn.login(email_address, password) # Select the 'alerts' folder imap_conn.select('Alerts') -# Search for unseen emails in the 'alerts' folder -status, email_ids = imap_conn.search(None, 'UNSEEN') +# Search for unseen emails in the 'alerts' folder, starting with the newest +status, response = imap_conn.uid('search', None, 'UNSEEN') +email_ids = response[0].split() -# Loop through the email IDs -for email_id in email_ids[0].split(): - # Fetch the email by ID - status, email_data = imap_conn.fetch(email_id, '(RFC822)') - - # Parse the email data - raw_email = email_data[0][1] +# Loop through the email UIDs +for email_id in email_ids: + # Fetch the email by UID + status, response = imap_conn.uid('fetch', email_id, '(RFC822)') + raw_email = response[0][1] email_message = email.message_from_bytes(raw_email) # Extract the body of the email @@ -47,4 +46,3 @@ for email_id in email_ids[0].split(): # Logout and close the connection imap_conn.logout() imap_conn.close() - diff --git a/get_csv.py b/get_csv.py new file mode 100644 index 0000000..88e46ea --- /dev/null +++ b/get_csv.py @@ -0,0 +1,65 @@ +import imaplib +import email +import csv +from getpass import getpass + +# IMAP server settings for Hotmail +imap_server = 'imap-mail.outlook.com' +imap_port = 993 + +# Email credentials +email_address = input('Email address: ') +password = getpass('Password: ') + +# Connect to the IMAP server +imap_conn = imaplib.IMAP4_SSL(imap_server, imap_port) + +# Login to the email account +imap_conn.login(email_address, password) + +# Select the 'alerts' folder +imap_conn.select('alerts') + +# Search for unseen emails in the 'alerts' folder, starting with the newest +status, response = imap_conn.uid('search', None, 'UNSEEN') +email_ids = response[0].split() + +# Create a list to store the email data +emails = [] + +# Loop through the email UIDs +for email_id in email_ids: + # Fetch the email by UID + status, response = imap_conn.uid('fetch', email_id, '(RFC822)') + raw_email = response[0][1] + email_message = email.message_from_bytes(raw_email) + + # Extract the desired information from the email + uid = email_id.decode() + date = email_message['Date'] + sender = email.utils.parseaddr(email_message['From'])[1] + + # Extract the body of the email + if email_message.is_multipart(): + for part in email_message.get_payload(): + if part.get_content_type() == 'text/plain': + email_body = part.get_payload(decode=True).decode() + break + else: + email_body = email_message.get_payload(decode=True).decode() + + # Add the email data to the list + emails.append([uid, date, sender, email_body]) + +# Logout and close the connection +imap_conn.logout() +imap_conn.close() + +# Write the email data to a CSV file +output_file = 'email_data.csv' +with open(output_file, 'w', newline='') as file: + writer = csv.writer(file) + writer.writerow(['UID', 'Date', 'Sender', 'Body']) + writer.writerows(emails) + +print(f"Email data written to {output_file}.")