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}.")