Goal: Socket programming assignments are to help you review and apply your conceptual knowledge from this class.
Attention: Although the examples discussed in class are in Python/C, your submission can be in Python/C/Java. If you choose do so, the caveat is that there is more help (see below) if you do it in Python. Code plagiarism is absolutely NOT allowed! Please prepare for a demonstration of running your program in front of the instructor/grader and answer their questions.
Instructions: (Textbook Page 180) This is the second of a series of programming assignments in the text book that will be assigned in the course of the semester. Students can find full details of these assignments, as well as important snippets of the Python code, at the Web site for the text book. http://wps.pearsoned.com/ecs_kurose_compnetw_6/.
The goal of this programming assignment is to create a simple mail client that sends email to any recipient. Your client will need to establish a TCP connection with a mail server (e.g. ECS mail server: gaia.ecs.cus.edu, or the SMTP server of CSUS: smtp.csus.edu), dialogue with the mail server using the SMTP protocol, send an email message to a recipient (e.g., your friend or yourself) via the mail server, and finally close the TCP connection with the mail server. Python provides a module, called smtplib, which has built in methods to send mail using SMTP protocol. However, we will not be using this module in this lab, because it hides the details of SMTP and socket programming.
For this assignment, the textbook’s companion Web site provides the skeleton code for your client. Your job is to complete the code and test your client by sending email to different user accounts. You may also try sending through different servers (for example, through ECS mail server: gaia.ecs.csus.edu).
If you are using the mail server gaia.ecs.csus.edu, the screenshot for code execution would look like:
If you are using the mail server smtp.csus.edu, the screenshot for code execution would look like:
Screenshot of SMTPClient
An electronic submission of lab report should be submitted to my SacCT before the deadline. You should include both your source code (could be a source file or a screenshot) and at least two screenshots that can help you demonstrate your work: one screenshot for the execution of source code in terminal, one screenshot for displaying the email in your email agent, such as outlook or a web browser. Otherwise, penalty will be given in grading. Code plagiarism is absolutely NOT allowed! Please also prepare for a demonstration of running your program in front of the instructor/grader and answer their questions (which are about your code). You grade will be based on both the report and your performance during demonstration (only upon request).
Requirement: The report will all be evaluated based on the following grading criteria.
Report Correctness, Completeness, Clarity
Demonstration Correctness, Completeness, Question