Assuming that wherever you go there is a telephone, using a telephone to check email is a sensible solution. That is what Columbia Email By Phone provides, a way for you to check your email and even send email. The Columbia Email By Phone system will check your email and read whatever message you want in your INBOX aloud over the telephone. The system is available from any telephone making it convenient for you to check your email when you are away from a computer.
Columbia Email By Phone will be integrated with Columbia University's Computer Science department's Internet Telephony project providing convenient access to email for all professors and students. Currently, there is a VoiceXML browser in development to be integrated with the Internet Telephony project that will allow users to connect to the Columbia Email By Phone system.
This is an example VoiceXML page:
The voice browser will interpret this page and say "Hello World!" to the user.
Columbia Email By Phone also uses JavaMail 1.2 API to facilitate the reading and sending of email messages. JavaMail 1.2 currently supports IMAP and POP3 protocols. The motivation behind using the JavaMail 1.2 API is that all of the email handling is done already so the bulk of the work can be concentrated on architecting the Columbia Email By Phone system.
The main class of the Columbia Email By Phone project is a servlet. Servlets add Java functionality to a webserver. Instead of using CGI, programmers can use servlets to handle the request/response processing. Also, servlets can manage resources like database connections better than CGI.
Java Server Pages (JSP)
Java Server Pages, or JSP, are an extension of Java Servlets, that serve dynamic content. Essentially JSP allows Java to be embedded in HTML or XML to provide dynamic content to static template pages. JSP is used in Columbia Email By Phone project to provide dynamic content to static VoiceVXML pages.
Columbia Email By Phone also used JDBC to connect to the MySQL database. JDBC provides an API for universal data access. Using JDBC, almost any data source can be accessed. The benefits of JDBC is that a different data source can be used (i.e. switching from MySQL to Oracle) with almost no changes necessary.
Model-View-Controller Design Pattern Model 2 Architecture
The Columbia Email By Phone System uses a Model-View-Controller (MVC) design pattern, more specifically Java Server Pages Model 2 architecture. The following figure depicts the architecture:
The Model 2 architecture utilizes the strengths of servlets to perform the backend processing while the JSP's serve as the presentation layer. In this architecture, the servlet acts as the controller and handles the request processing. The servlet also determines which JSP page to forward the request to, which then handles the presentation layer. The JSP page itself does not provide any processing logic; it merely extracts dynamic content from the servlet and inserts inserts it into static templates.
One such service is provided by CoolMail. CoolEmail allows users to listen and reply to email, voicemail and faxes messages with any phone, computer or wireless device from one central location. CoolEmail costs money to use and is more complicated than the Columbia Email By Phone system. While CoolMail allows more functionality than Columbia Email By Phone, the additional functionality is excessive and not necessary. It is also hard to integrate CoolMail and other professional email services like CoolMail into the Computer Science Internet Telephony project. It is also probably hard to customize CoolMail for the needs of the professors and students.
One of TellMe's Extensions is also a service to check email by phone
Similar to Columbia Email By Phone, the user registers for the service
from a webpage. The email service is written using CGI. Like
CoolMail, it is hard to integrate this service into the Computer Science
Internet Telephony project. It is also probably hard to customize
this service for the needs of the professors and students.
EmailServlet serves as the main controller. It handles the requests from the Voice Browser. Based on the specified action, a different action is performed. For example, if the action is login, then EmailServlet performs login and checks the login and pin variables. Depending on the action, the database will be queried and email checked. Also depending on the action, an appropriate JSP page will be used to display dynamic content using static VoiceXML templates.
For a detailed description of the classes involved with the Columbia Email By Phone project, please consult the API.
The following database tables are used in Columbia Email By Phone:
CREATE TABLE user (userid int(10) NOT NULL,
pin char(4) NOT NULL,
CREATE TABLE host (hostid int(10) NOT NULL AUTO_INCREMENT,
hostname char(255) NOT NULL,
PRIMARY KEY (hostid)
CREATE TABLE account (userid int(10) NOT NULL,
email char(255) NOT NULL,
password char(255) NOT NULL,
hostid char(255) NOT NULL,
protocol char (255) NOT NULL,
PRIMARY KEY (userid, email),
FOREIGN KEY (userid) REFERENCES user,
FOREIGN KEY (hostid) REFERENCES host
CREATE TABLE addressbook (userid int(10) NOT NULL,
name char(255) NOT NULL,
email char(255) NOT NULL,
PRIMARY KEY (userid, email),
FOREIGN KEY (userid) REFERENCES user
Since the user can have multiple accounts it is good to store the user
information once (too avoid redundancy) and then reference it through the
account tables. Similarly, the host is also handled in this way.
Rather than repeat information and storing unnecessary information over
and over again, the name of the server can be taken from another table
that only lists it once. Also, the design of the addressbook is that
name/email address pairs are mapped to an userid so that a user can have
multiple addresses in their addressbook.