Assignment 3 mail client the goal of this programming assignment
Assignment 3: Mail Client
Goal:
The goal of this programming assignment is to design and implement a simple mail client that allows users to send and receive emails. The mail client should be able to connect to a mail server, retrieve emails, and send new emails.
Requirements:
- The mail client should be able to connect to a mail server using the POP3 (Post Office Protocol version 3) or IMAP (Internet Message Access Protocol) protocol.
- The mail client should be able to retrieve emails from the mail server and display them to the user.
- The mail client should be able to allow the user to compose and send new emails.
- The mail client should be able to handle multiple email accounts.
- The mail client should be able to handle different email formats (e.g., plain text, HTML).
- The mail client should be able to handle attachments (e.g., images, documents).
Features:
- Login/Logout: The mail client should allow users to login and logout of their email accounts.
- Email List: The mail client should display a list of emails in the user's inbox, including the sender, subject, and date.
- Email Viewing: The mail client should allow users to view individual emails, including the body and any attachments.
- Composing: The mail client should allow users to compose new emails, including the ability to add attachments.
- Sending: The mail client should allow users to send new emails.
- Deleting: The mail client should allow users to delete emails from their inbox.
Technical Requirements:
- The mail client should be implemented in a programming language of your choice (e.g., Python, Java, C++).
- The mail client should use a library or framework to handle the POP3 or IMAP protocol (e.g., Python's
poplib
orimaplib
modules). - The mail client should use a GUI library or framework to create a user-friendly interface (e.g., Tkinter, PyQt, Swing).
- The mail client should be able to handle errors and exceptions gracefully.
Evaluation Criteria:
- Correctness: Does the mail client correctly connect to the mail server, retrieve emails, and send new emails?
- Usability: Is the mail client easy to use and navigate?
- Code Quality: Is the code well-organized, readable, and maintainable?
- Error Handling: Does the mail client handle errors and exceptions correctly?
Grading:
- Correctness: 40%
- Usability: 30%
- Code Quality: 20%
- Error Handling: 10%
Submission:
Please submit your mail client as a single zip file containing the source code, a README file with instructions on how to run the program, and any necessary dependencies or libraries.