Fetch Unseen Emails From Gmail Inbox - GeeksforGeeks

28 Jul, 2020
Python is a widely used high-level, general-purpose, interpreted, multi-utility, dynamic programming language. It can be used to do a wide range of tasks like machine learning, web application development, cross-platform GUI development, and much more. Fetching Gmail is another of a task that could be achieved by Python. You may need to fetch a mail from your inbox in your project or website for any reason. In this tutorial, we’ll learn about how to fetch unseen emails from Gmail Inbox/Sent Mails.To begin, we will be required an app password that is generated by Google Security, since using Password cannot be secure using in some projects or scripts directly.
Go to account.google.com with your account.In left tabs, choose Security.Under Signing into Google, Choose App Password.Confirm your identity.Choose Custom.Choose any name for your Application and Generate the Password.That’s your App Password. Copy the password, we’ll be needing that.
Go to account.google.com with your account.
In left tabs, choose Security.
Under Signing into Google, Choose App Password.
Confirm your identity.
Choose Custom.
Choose any name for your Application and Generate the Password.
That’s your App Password. Copy the password, we’ll be needing that.
You’ll also need to Enable IMAP in the Google Settings. 
The Library you’ll use are :  
imaplibemailwebbrowseros
imaplib
email
webbrowser
os
That’s all for the prerequisite. Let’s see the code now. 
Python3
# import required librariesimport imaplibimport emailfrom email.header import decode_headerimport webbrowserimport os  # use your email id hereusername = ""   # use your App Password you# generated above here.password = ""   # creata a imap objectimap = imaplib.IMAP4_SSL("imap.gmail.com")  # loginresult = imap.login(username, password)  # Use "[Gmail]/Sent Mails" for fetching# mails from Sent Mails. imap.select('"[Gmail]/All Mail"', readonly = True)   response, messages = imap.search(None,                                  'UnSeen')messages = messages[0].split()  # take it from lastlatest = int(messages[-1])  # take it from startoldest = int(messages[0])  for i in range(latest, latest-20, -1):    # fetch    res, msg = imap.fetch(str(i), "(RFC822)")          for response in msg:        if isinstance(response, tuple):             msg = email.message_from_bytes(response[1])           # print required information           print(msg["Date"])           print(msg["From"])           print(msg["Subject"])      for part in msg.walk():        if part.get_content_type() == "text / plain":            # get text or plain data            body = part.get_payload(decode = True)            print(f'Body: {body.decode("UTF-8")}', )
Output: This code will fetch you the top 20 unseen emails in the inbox.
 
 
Python-projects
python-utility
Python
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Read a file line by line in Python
Enumerate() in Python
How to Install PIP on Windows ?
Iterate over a list in Python
Different ways to create Pandas Dataframe
Python String | replace()
Create a Pandas DataFrame from Lists
Python program to convert a list to string
Reading and Writing to text files in Python