In this four-part series of articles we are going to build an email client with PHP. I will try to implement a full email client with all the functionality that you would expect from an email client, which includes a trash folder, sent items folder and a draft folder. But that's not all.
The Messages table is at the heart of the application. It is responsible for storing all the mail messages as they are downloaded from the server. This is where it all begins. The userid identifies the user that is downloading the messages and is stored in the userid foreign key.
CREATE TABLE `messages` ( `msg_id` int(11) NOT NULL auto_increment, `msg_num` int(11) NOT NULL default '0', `from` varchar(100) NOT NULL default '', `subject` varchar(200) NOT NULL default '', `msg_date` datetime NOT NULL default '0000-00-00 00:00:00', `msg_body` text NOT NULL, `checked` int(1) NOT NULL default '0', `userid` int(11) NOT NULL default '0', PRIMARY KEY (`msg_id`) ) TYPE=MyISAM AUTO_INCREMENT=3 ;
INSERT INTO `messages` VALUES (1, 2, 'admin@lo.com', 'helloooo', '2005-12-20 00:00:00', '<h1>Hello Jack</h1><br>rn<br>rn<p>This is a <em>cool</em> day</p>rnrn<font color="#FF000">The End</font>', 1, 1);
The sent and trash tables will store all the sent items and messages classed as trash. Both contain the foreign key that will identify the user of the system.
CREATE TABLE `sent` ( `sent_id` int(11) NOT NULL auto_increment, `to` int(200) NOT NULL default '0', `from` varchar(100) NOT NULL default '', `subject` varchar(200) NOT NULL default '', `msg_body` text NOT NULL, `userid` int(11) NOT NULL default '0', `date_sent` date NOT NULL default '0000-00-00', `cc` varchar(100) NOT NULL default '', `bcc` varchar(100) NOT NULL default '', `attachment` varchar(255) NOT NULL default '', PRIMARY KEY (`sent_id`) ) CREATE TABLE `trash` ( ` trash_id ` int(11) NOT NULL auto_increment, `to` int(200) NOT NULL default '0', `from` varchar(100) NOT NULL default '', `subject` varchar(200) NOT NULL default '', `msg_body` text NOT NULL, `userid` int(11) NOT NULL default '0', attachment` varchar(255) NOT NULL default '', PRIMARY KEY (`trash_id`) )
The "users" table is also another important table. It will help to store user details and will also be used by almost all scripts to retrieve user related information from the database. The user ID is set at login and is used throughout the application.
CREATE TABLE `user` ( `user_id` int(11) NOT NULL auto_increment, `uname` varchar(100) NOT NULL default '', `upass` varchar(50) NOT NULL default '', `email` varchar(90) NOT NULL default '', `remuser` varchar(200) NOT NULL default '', `rempass` varchar(200) NOT NULL default '', `pop3` varchar(200) NOT NULL default '', `smtp` varchar(255) NOT NULL default '', PRIMARY KEY (`user_id`) ) TYPE=MyISAM AUTO_INCREMENT=3 ;