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:

  1. 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.
  2. The mail client should be able to retrieve emails from the mail server and display them to the user.
  3. The mail client should be able to allow the user to compose and send new emails.
  4. The mail client should be able to handle multiple email accounts.
  5. The mail client should be able to handle different email formats (e.g., plain text, HTML).
  6. The mail client should be able to handle attachments (e.g., images, documents).

Features:

  1. Login/Logout: The mail client should allow users to login and logout of their email accounts.
  2. Email List: The mail client should display a list of emails in the user's inbox, including the sender, subject, and date.
  3. Email Viewing: The mail client should allow users to view individual emails, including the body and any attachments.
  4. Composing: The mail client should allow users to compose new emails, including the ability to add attachments.
  5. Sending: The mail client should allow users to send new emails.
  6. Deleting: The mail client should allow users to delete emails from their inbox.

Technical Requirements:

  1. The mail client should be implemented in a programming language of your choice (e.g., Python, Java, C++).
  2. The mail client should use a library or framework to handle the POP3 or IMAP protocol (e.g., Python's poplib or imaplib modules).
  3. The mail client should use a GUI library or framework to create a user-friendly interface (e.g., Tkinter, PyQt, Swing).
  4. The mail client should be able to handle errors and exceptions gracefully.

Evaluation Criteria:

  1. Correctness: Does the mail client correctly connect to the mail server, retrieve emails, and send new emails?
  2. Usability: Is the mail client easy to use and navigate?
  3. Code Quality: Is the code well-organized, readable, and maintainable?
  4. Error Handling: Does the mail client handle errors and exceptions correctly?

Grading:

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.