CSC309 Assignment #3
(due November 16th in tutorial)


For this assignment you will combine HTML, JavaScript, network protocols, CGI and Perl, to implement a realistic Web-based system for sending and receiving e-mail.  This system will behave like a simplified version of the popular Web-based e-mail systems such as Hotmail and Yahoo.

The Web interface for your system will consist of three major parts: (1) a front-end Login page, (2) a mail-reading page that displays a list of messages from the user's mailbox and allows the user to select messages for interaction such as reading and deleting, and (3) a mail composition page for writing and sending messages.

Users begin interaction with your site through a Login page that prompts for username, password, e-mail address and mail server name. Once their identity is validated, users are offered the choice of reading their messages from the mail server and composing messages to be sent. Your system must prevent users from reading or composing messages if they have not first authenticated through the Login window.

The mail-reading and composition pages should be partitioned into 2 vertical frames. The left frame should always show the following three options: Retrieve Messages, Compose, and Logout.

The Retrieve Messages frame should display a "Delete Checked Mail" button, and for each message:
           SenderDate Subject (displays the message body when clicked),  delete check box

The Compose frame should provide Send and Reset buttons as well as the following fields:

The Logout option displayed in the left frame returns the system to the Login page state.  Your system should ensure that once the user selects the Logout option they are not permitted to return to the Retrieve Messages or Compose screens without providing Login information.

Your mail client will be designed to work with mail servers running the SMTP mail transport protocol and the POP3 mail user agent protocol. Skeletal perl modules for sending and receiving mail using the SMTP and POP3 protocols are provided for you. You will extend the functionality of these base modules to integrate them with your user interfaces. To implement a working Web mail system, you must have access to a mail server that will respond to SMTP and POP3 protocol requests to send and retrieve messages. For this project, you can use your CDF account, with mailsrv.cdf.toronto.edu as both the POP3 server for receiving messages and the SMTP server to send mail. Alternatively, you can create your own account on a free web-based email service such as Yahoo (there are numerous free POP3-based mail services on the Web).  Your system should work for any number of clients simultaneously accessing e-mail (both sending and receiving).

To protect reader privacy, your solution should ensure that the user's Web mail browser does not cache retrieved messages. Users with browsers configured for Accept-Language other than English should initially see a splash screen notifying them that you plan to release a version of your system for their language; they should then be taken to your standard Login page. Output from your CGI scripts should include an indication of the language used in the generated HTML.

Hand in hard-copy the following items:

Your site must correctly function including handling common error conditions that are inherent in providing a general service. You should use the submit command on CDF to submit your web site files and perl source files. The main entry for your site should be called index.html. The T/A's will run your website in the following way:

Good Luck!