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:
<?xml version="1.0"?>
<vxml>
<form>
<block>
<audio>Hello World!</audio>
</block>
</form>
</vxml>
The voice browser will interpret this page and say "Hello World!" to the user.
JavaMail
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.
Java Servlets
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.
JDBC
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
(http://ragtime.weissman.org/email/register.cgi).
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.
Database Tables
The following database tables are used in Columbia Email By Phone:
CREATE TABLE user (userid int(10) NOT NULL,
pin char(4) NOT NULL,
PRIMARY KEY(userid)
);
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.