<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Recive Mail
This file is imported by Server and Check ME. All function is define here.
Importing all dependency
Step1:  User Details Function
Step2:  Login function
In this function we call user details function and get the user name and password, Than we use those details for IMAP login.
 IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server, but allows the end user to view and manipulate the messages as though they were stored locally on the end user's computing device(s).
Step3:  Mail Server
This will start a server that notify user when there is new email
Step4:  This function call Check_Unseen in every 15 sec.
<ASSISTANT_TASK:>
Python Code:
__author__ = 'Shahariar Rabby'
import email
import imaplib
import ctypes
import getpass
import threading
from playsound import playsound
Explanation: Recive Mail
This file is imported by Server and Check ME. All function is define here.
Importing all dependency
End of explanation
def user():
#     ORG_EMAIL = "@gmail.com"
#     FROM_EMAIL = "your mail" + ORG_EMAIL
#     FROM_PWD = "your pass"
    FROM_EMAIL = raw_input("insert Email : ")+'@gmail.com'
    FROM_PWD = getpass.getpass("input : ")
    return FROM_EMAIL,FROM_PWD
Explanation: User Details Function
End of explanation
def login():
    FROM_EMAIL,FROM_PWD = user()
    mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
    mail.login(FROM_EMAIL, FROM_PWD)
    mail.select("INBOX")
    print 'Login successful'
    return mail
mail = login()
def read_email_from_gmail(mail):
    try:
        type, data = mail.search(None, 'ALL') #Sharching all message frm inbox
        mail_ids = data[0] #Assining all mail id to mail_ids Variable
        id_list = mail_ids.split() #putting all mail id to id_list array
        first_email_id = int(id_list[0]) #getting first mail id
        latest_email_id = int(id_list[-1]) #getting last mail id
        for i in range(latest_email_id, latest_email_id - 10, -1): #this loop reading last 10 message
            typ, data = mail.fetch(i, '(RFC822)') #fatch mail data, and putting it a tuple where i=tuple no and 'RFC822' is mail
            for response_part in data: #reading all data from i no message
                if isinstance(response_part, tuple): 
                    msg = email.message_from_string(response_part[1]) #Reading mail
                    email_subject = msg['subject'] #Email subject
                    email_from = msg['from'] #Sender address
                    print 'From : ' + email_from
                    print 'Subject : ' + email_subject
                    print "Read mail: https://gmail.com\n"
    except Exception, e:
        print (str(e)) #printing if there is any error
Explanation: Login function
In this function we call user details function and get the user name and password, Than we use those details for IMAP login.
 IMAP (Internet Message Access Protocol) is a standard email protocol that stores email messages on a mail server, but allows the end user to view and manipulate the messages as though they were stored locally on the end user's computing device(s).
End of explanation
def Check_Unseen():
    mail.select("INBOX") #Selecting inbox
    n = 0
    (retcode, messages) = mail.search(None, '(UNSEEN)') #sharching unseen mail
    if retcode == 'OK': #if unseen
        for num in messages[0].split():
            n = n + 1 
            print n #print message number
            typ, data = mail.fetch(num, '(RFC822)') #fatching mail
            for response_part in data:
                if isinstance(response_part, tuple):
                    original = email.message_from_string(response_part[1])
                    print original['From']
                    data = original['Subject']
                    playsound('demonstrative.wav') #play sound when mail recive
                    print data
                    print "Read mail: https://gmail.com"
    from sys import stdout
    stdout.write(str('#')) #printing mail server is alive
Explanation: Mail Server
This will start a server that notify user when there is new email
End of explanation
def server():
    Check_Unseen()
    threading.Timer(15, server).start() #calling function evey 15 sec
Explanation: This function call Check_Unseen in every 15 sec.
End of explanation
<END_TASK>