![]() |
|
[Python] export mail adresses from gmail - Printable Version +- Hack Forums (https://hackforums.net) +-- Forum: Tech (https://hackforums.net/forumdisplay.php?fid=444) +--- Forum: Coding (https://hackforums.net/forumdisplay.php?fid=151) +---- Forum: Software Development (https://hackforums.net/forumdisplay.php?fid=118) +---- Thread: [Python] export mail adresses from gmail (/showthread.php?tid=6186513) |
export mail adresses from gmail - splinter1 - Dec 26, 2021 I got an exe that enables secure apps on gmail, now i need to export all mail adresses from gmail account, i found this code python 3 import email import imaplib import getpass import sys import re from pprint import pprint as pp # User may want to change these parameters if running script as-is SEARCH_FOLDER = '[Gmail]Trash' # TODO: A user will want to change this # Other folders: "INBOX", "[Gmail]/All Mail" DEFAULT_MAIL_SERVER = 'imap.gmail.com' # No user parameters below this line ADDR_PATTERN = re.compile('<(.*?)>') # Finds email as <[email protected]> def connect(user, pwd, server=DEFAULT_MAIL_SERVER): """Connect to [the specified] mail server. Return an open connection""" conn = imaplib.IMAP4_SSL(server) try: conn.login(user, pwd) except imaplib.IMAP4.error: print "Failed to login" sys.exit(1) return conn def print_folders(conn): """Print a list of open mailbox folders""" for f in conn.list(): print "\t", f def get_folder(conn, folder_name): """Fetch a specific folder (or label) from server""" if conn.state == "SELECTED": # Explicitly close any previously opened folders; may not be necessary conn.close() rv, data = conn.select(folder_name) if rv != 'OK': print "Could not open specified folder. Known labels:" print_folders(conn) return conn def get_email_ids(conn, query='ALL'): """Get the numeric IDs for all emails in a given folder""" if conn.state != "SELECTED": raise imaplib.IMAP4.error("Cannot search without selecting a folder") rv, data = conn.uid('search', None, query) if rv != 'OK': print "Could not fetch email ids" # for some reason... return [] return data[0].split() def fetch_message(conn, msg_uid ): """ Fetch a specific message uid (not sequential id!) from the given folder; return the parsed message. User must ensure that specified message ID exists in that folder. """ # TODO: Could we fetch just the envelope of the response to save bandwidth? rv, data = conn.uid('fetch', msg_uid, "(RFC822)") if rv != 'OK': print "ERROR fetching message #", msg_uid return {} return email.message_from_string(data[0][1]) # dict-like object def get_recipients(msg_parsed): """Given a parsed message, extract and return recipient list""" recipients = [] addr_fields = ['From', 'To', 'Cc', 'Bcc'] for f in addr_fields: rfield = msg_parsed.get(f, "") # Empty string if field not present rlist = re.findall(ADDR_PATTERN, rfield) recipients.extend(rlist) return recipients if_name_ == "__main__": username = raw_input("Full email address: ") password = getpass.getpass() # Connect mail_conn = connect(username, password) # Open a specific folder and get list of email message uids mail_conn = get_folder(mail_conn, SEARCH_FOLDER) msg_uid_list = get_email_ids(mail_conn) # Fetch a list of recipients all_recipients = [] for msg_uid in msg_uid_list: msg = fetch_message(mail_conn, msg_uid) recip_list = get_recipients(msg) all_recipients.extend(recip_list) # Very unsophisticated way of showing the recipient list print "List of all recipients:" print "------------" pp(all_recipients) print "\n\n List of all UNIQUE recipients:" print "-------------------------------" pp(set(all_recipients)) try: mail_conn.close() # Close currently selected folder (if any) finally: mail_conn.logout() but it returns "failed to login" , anyone knows a working code? help is appriciated. Since when does this not work anymore? To The Krays: Also The Krays, what happened? My messages on telegram won;t arive, like you are offline. our hole chat has been deleted to. \ Nevermind, i got it to work Update,\ somehow it works for one gmail account, but it doesnt for my other gmail account, both ave secure apps enabled. How can this be? RE: export mail adresses from gmail - oje28830 - Dec 27, 2021 If you're willing to pay me 1,250$ i'll write you a professional program that does this to you. |