Version: 1.5
Type: Sample Code (HOWTO)
Category: HTML
License: GNU General Public License
Description: This is kind of like HotMail, I just call it Hotmail because It looks like it.
<?php
// You need PHP4 (because it's using sessions) to work this.
// ------------ Configuration
$optionvalue="IMAP"; //set it to POP3 if using pop connection
$serverdo="mail.something.com"; //Server
$myname="Airlines Webmail"; //Who's webmail?
// ----------------------------
session_start();
echo "<title> $myname </title>\n";
$javascript_for_select = "<script language='javascript'><!--\n";
$javascript_for_select .= "function selectState(state) {\n";
$javascript_for_select .= "for(i=0; i < document.forms[0].elements.length;i++){\n";
$javascript_for_select .= "document.forms[0].elements[i].checked=state;\n";
$javascript_for_select .= "}\n}\n";
$javascript_for_select .= "//--></script>\n";
$select_all = " <input type='button' value='Select All' onclick='";
$select_all .= "selectState(true)'> ";
$unselect_all = "<input type='button' value='Unselect All' onclick='";
$unselect_all .= "selectState(false)'> ";
if($CMD == "topframe") {
if(!$folder){ $folder = "INBOX"; }
if($type == "POP3") {
$mbox = imap_open("{".$session_server.":110/pop3}INBOX.".urldecode($foldery), $sesson_username, $session_password) or die("<h2>Invalid IMAP/POP3 Server</h2> The IMAP/POP3 Server ".$server." did not connect successfully.");
} elseif($type == "IMAP") {
$mbox = imap_open("{".$session_server."}".$foldery, $session_username, $session_password) or die("<h2>Invalid IMAP/POP3 Server</h2> The IMAP/POP3 Server ".$server." did not connect successfully.");
}
echo "<meta HTTP-EQUIV='refresh' CONTENT='1500'>\n";
echo "<body BGCOLOR=BLUE><font COLOR=WHITE>\n";
$mcheck = imap_check($mbox);
$mnum = $mcheck->Nmsgs;
if($mnum == "0") {
echo "<br>You have no messages in your INBOX.";
} else {
$overview = imap_fetch_overview($mbox, "1:$mnum", 0);
echo "<form ACTION='webmail.php?CMD=delete' METHOD=post name=delete>\n";
echo "<input TYPE=submit VALUE=Delete>\n";
echo $select_all;
echo $unselect_all;
echo "<table BORDER=0>\n";
$s=sizeof($overview);
echo "<tr><td>FROM</td><td>SUBJECT</td><td>DATE</td><td>Delete</td></tr>";
for($i=$s-1; $i >= 0; $i--) {
$val=$overview[$i];
$nb=$val->msgno;
$rawsubject = imap_mime_header_decode($val->subject);
$subject = $rawsubject[0]->text;
if($subject == ''){ $subject = "[no subject]"; }
$rawfrom = imap_mime_header_decode($val->from);
$from = $rawfrom[0]->text;
$header = imap_header($mbox,$nb);
if($header->Unseen == "U") {
$font = "bgcolor=\"black\"";
} else {
$font = "ignore=\"true\"";
}
$date=$val->date;
$isfont = ($font == "bgcolor=\"black\"") ? "<!-- yes -->" : "<!-- no -->";
echo "<tr ".$font."><td>".$isfont."<a HREF='webmail.php?CMD=view&num=$nb&foldery=$folder' STYLE='cursor:hand' STYLE='color:white'>";
echo "$from</a></td></font><td>".$isfont."<a HREF='webmail.php?CMD=view&num=$nb&foldery=$folder' STYLE='color:white'>$subject</a></td></font><td>".$isfont."<a HREF='webmail0.7.htm?CMD=view&num=$nb&foldery=$folder' STYLE='color:white'>$date</a></td><td><input TYPE='checkbox' NAME='num[]' VALUE=$nb></td></tr></font>";
}
echo "</table>\n</body>";
echo $javascript_for_select;
}
imap_close($mbox);
} elseif($CMD == "source") {
if($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}".urldecode($foldery),$session_username,$session_password);
} elseif($type == 'IMAP') {
$mbox=imap_open("{".$session_server."}".urldecode($foldery),$session_username,$session_password);
}
$structure=imap_fetchstructure($mbox,$num);
echo "<pre>";
$rb=imap_fetchbody($mbox,$num,0);
$rb=str_replace("<","<",$rb);
echo $rb;
echo "\n\n";
$mb=imap_body($mbox,$num);
$mb=str_replace("<","<",$mb);
echo $mb;
echo "</pre>";
} elseif($CMD == "view") {
if($type == "POP3") {
$mbox = imap_open("{".$session_server.":110/pop3}".urldecode($foldery), $session_username, $session_password);
} elseif($type == "IMAP") {
$mbox = imap_open("{".$session_server."}".urldecode($foldery), $session_username, $session_password);
}
$h=imap_headers($mbox);
imap_setflag_full($mbox,imap_uid($mbox,substr($h[$num],5,4)),'\\SEEN',SE_UID);
$info=imap_header($mbox, $num);
$from=$info->from[0];
echo "<style> A { color:yellow } </STYLE>";
echo "<body BGCOLOR=BLUE>\n";
echo "<table BORDER=0 BGCOLOR=BLUE><font COLOR=WHITE>";
echo "<tr><td><a HREF='webmail.php?CMD=topframe&folder=$foldery'>Back to Messages</a></td><td><a HREF='javascript:void(window.open(\"webmail.php?CMD=reply&num=$num&foldery=$foldery\"))'>Reply to Message</a></td><td><a HREF='webmail.php?CMD=delete&num=$num&foldery=$foldery'>Delete This Message</a></td><td><a HREF='javascript:void(window.open(\"webmail.php?CMD=compose\"))'>Compose Message</a></td></tr>";
$rawdfrom = imap_mime_header_decode($info->fromaddress);
$from = $rawdfrom[0]->text;
echo "<tr><td>From</td><td>$from</td></tr>";
echo "<tr><td>To</td><td>$info->toaddress</td></tr>";
if($info->ccaddress){ echo "<tr><td>CC</td><td>$info->ccaddress</td></tr>"; }
if($info->bccaddress){ echo "<tr><td>BCC</td><td>$info->bccaddress</td></tr>"; }
echo "<tr><td>Date</td><td>$info->Date</td></tr>";
$rawdsubject = imap_mime_header_decode($info->Subject);
$subject = $rawdsubject[0]->text;
echo "<tr><td>Subject</td><td>$subject</td></tr>";
$structure = imap_fetchstructure($mbox, $num);
$structure=imap_fetchstructure($mbox,$num);
if(isset($structure->parts)) {
echo "<tr><td>Attachments</td><td>";
while(list($key,$val) = each($structure->parts)) {
if($key > 0) {
if($val->ifparameters) {
$attach=$val->parameters;
echo "<a href='webmail.php?CMD=Attachview&num=$num&part=$key&foldery=$foldery' TARGET=blanke>";
$attachmenttext=$attach[0]->value;
$attachmenttext=str_replace("US-ASCII", "HTML/HTM Document", $attachmenttext);
$attachmenttext=str_replace("us-ascii", "HTML/HTM Document", $attachmenttext);
echo $attachmenttext;
echo "</a>, ";
} else {
echo "<a href='webmail.php?CMD=Attachview&num=$num&part=$key&foldery=$foldery' TARGET=blanke>";
echo "(unnamed)</a>, ";
}
}
}
}
echo "</tr>\n</td>";
echo "<tr><td>\n";
echo "<a HREF='javascript:void(window.open(\"webmail.php?CMD=source&num=$num&foldery=$foldery\"));'>Source</a>";
echo "</td></tr>\n";
echo "</table><br><pre>";
if(isset($structure->parts)) {
$body=imap_fetchbody($mbox,$num,1);
} else {
$body=imap_body($mbox,$num);
}
$partone = $structure;
$parttwo = $partone->parts[0];
if($parttwo->encoding == 3) {
$ambody = imap_base64($body);
} elseif($parttwo->encoding == 4) {
$ambody = imap_qprint($body);
} else {
$ambody = $body;
}
echo $ambody;
echo "</pre><br>";
echo "<table BORDER=0>";
echo "<tr><td><a HREF='webmail.php?CMD=topframe&folder=$foldery'>Back to Messages</a></td><td><a HREF='javascript:void(window.open(\"webmail.php?CMD=reply&num=$num&foldery=$foldery\"))'>Reply to Message</a></td><td><a HREF='webmail.php?CMD=delete&num=$num&foldery=$foldery'>Delete This Message</a></td><td><a HREF='javascript:void(window.open(\"webmail.php?CMD=compose\"))'>Compose Message</a></td></tr>";
echo "</table>";
imap_close($mbox);
} elseif($CMD == "reply") {
if($type == "POP3") {
$mbox = imap_open("{".$session_server.":110/pop3}".urldecode($foldery), $session_username, $session_password);
} elseif($type == "IMAP") {
$mbox = imap_open("{".$session_server."}".urldecode($foldery), $session_username, $session_password);
}
$replytext=imap_header($mbox, $num);
$to=$replytext->from[0];
echo "<body BGCOLOR=BLUE><font COLOR=WHITE>\n";
echo "<form ACTION='webmail.php?CMD=send' enctype='multipart/form-data' METHOD='post'>\n";
echo "<input type='hidden' name='MAX_FILE_SIZE' value='248000012'>\n";
echo "<h1>Reply to this Message</h1>";
echo "To: <input type='text' name='to' value='$to->mailbox@$to->host'><br>\n";
echo "From: <input type='text' name='fr' value='$replytext->toaddress'><br>\n";
echo "CC: <input type='text' name=cc value=''><br>\n";
echo "BCC: <input type='text' name=bcc value='><br>\n";
$subj = $replytext->Subject;
$subj = str_replace("Re:", "", $subj);
echo "Subject: <input type='text' name='su' value='Re: $subj'><br>\n";
echo "<textarea ROWS='20' cols='45' name='ms'>";
$structure=imap_fetchstructure($mbox,$num);
if(isset($structure->parts)) {
$body = imap_fetchbody($mbox,$num,1);
} else {
$body = imap_body($mbox,$num);
}
$body = str_replace("\n", "\n> ", $body);
$body = str_replace("<", "<", $body);
$body = str_replace(">", ">", $body);
echo "\n\n\nOn $replytext->Date, $replytext->fromaddress wrote:\n";
echo "> ".$body;
echo "<\textarea><br>\n";
echo "<input TYPE=submit value='Send Message'>";
imap_close($mbox);
} elseif($CMD == "compose") {
$generated="";
$generated=$session_username."@".$session_server;
$generated=str_replace("mail.","",$generated);
$generated=str_replace("pop.","",$generated);
$generated=str_replace("pop3.","",$generated);
$generated=str_replace("imap.","",$generated);
echo "<form ACTION='webmail.php?CMD=send' enctype='multipart/form-data' METHOD=post>\n";
echo "<input type='hidden' name='MAX_FILE_SIZE' VALUE='2480000021'>\n";
echo "<body BGCOLOR='blue'><font COLOR='white'>\n";
echo "<h1>Compose a Message</h1>\n";
echo "To: <input type='text' name='to' value=''><br>\n";
echo "From: <input type='text' name=fr value='$generated'><br>\n";
echo "CC: <input type='text' name=cc value=''><br>\n";
echo "BCC: <input type='text' name=bcc value=''><BR>\n";
echo "Subject: <input type=text name=su value=''><br>\n";
echo "<textarea rows='20' cols=55 name=ms><\textarea><br>\n";
echo "<input type='submit' value='Send'></form>\n";
} elseif($CMD == "delete") {
if($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}".urldecode($foldery), $session_username, $session_password);
} elseif($type == "IMAP") {
$mbox=imap_open("{".$session_server."}".urldecode($foldery), $session_username, $session_password);
}
for($i=0; $i < sizeof($num); $i++) {
imap_delete($mbox,$num[$i]);
}
imap_expunge($mbox);
echo "<script> window.location='webmail.php?CMD=topframe'; </SCRIPT>";
imap_close($mbox);
} elseif($CMD == "Attachview") {
if($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}".urldecode($foldery),$session_username,$session_password);
} elseif($type == "IMAP") {
$mbox=imap_open("{".$session_server."}".urldecode($foldery),$session_username,$session_password);
}
$mimetype=array("text","multipart","message","application","audio","image","video","other");
$structure=imap_fetchstructure($mbox,$num);
$attach_body = imap_fetchbody($mbox,$num,$part+1);
$atype=$structure->parts[$part]->type;
if($atype=="") $atype=0;
$asubtype=$structure->parts[$part]->subtype;
if($asubtype == "") $asubtype='PLAIN';
$attach_type=$mimetype[$atype]."/".$asubtype;
$attach_name=$structure->parts[$part]->parameters[0]->value;
if($attach_name = "") $attach_name='(unnamed)';
$anencode=$structure->parts[$part]->encoding;
if($anencode == 3){
$return_content=imap_base64($attach_body);
} elseif($anencode == 4) {
$return_content=imap_qprint($attach_body);
} else {
$return_content=$attach_body;
}
header("Content-type: $attach_type");
if(($atype != 0) && ($atype != 5)){
header("Content-Disposition: attachment; filename=$attach_name");
}
echo $return_content;
} elseif($CMD == "folders") {
if($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}", $session_username, $session_password);
$folderr=imap_listmailbox($mbox,"{".$session_server.":110/pop3}","*");
$am="{".$session_server.":110/pop3}";
} elseif($type == "IMAP") {
$mbox=imap_open("{".$session_server."}",$session_username,$session_password);
$am="{".$session_server."}";
$folderr=imap_listmailbox($mbox,"{".$session_server."}","*");
}
echo "<body BGCOLOR=blue><font COLOR=white>\n";
echo "<form ACTION='webmail.php?CMD=folders_do' METHOD=post>\n";
echo "Folders<br><br>";
echo "Create New Mailbox: <input type='text' name='newbox'> <input type=submit value=Make>";
echo "<br><br>";
echo "Rename Mailbox: <select name='renameFolder'>\n";
while(list($useless_key,$helped_val) = each($folderr)) {
$helped_val = str_replace($am,"",$helped_val);
echo "<option VALUE='INBOX.".urlencode($helped_val)."'>$helped_val</option>\n";
}
echo "</select> ";
echo "<input TYPE='text' name='newfolder'> ";
echo "<input TYPE='submit' VALUE='Rename'><br><br>";
echo "Delete Mailbox <select NAME='delefolder'>\n";
for($i=0; $i < count($folderr); $i++) {
$folderr[$i] = str_replace($am,"",$folderr[$i]);
echo "<option VALUE='".$folder[$i]."'>".$folderr[$i]."</option>\n";
}
echo "</select> ";
echo "<input TYPE=submit VALUE='Delete Folder'>\n";
echo "</form>";
} elseif($CMD == "folders_do") {
if($type == "IMAP") { //go opposite
$mbox=imap_open("{".$session_server."}", $session_username,$session_password);
$ish="{".$session_server."}";
} elseif($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}",$session_username, $session_password);
$ish="{".$session_server.":110/pop3}";
}
if($newbox) {
imap_createmailbox($mbox,imap_utf7_encode($ish."INBOX.$newbox"));
}
if($newfolder) {
imap_renamemailbox($mbox,$ish.$renameFolder,$ish."INBOX.".$newfolder);
}
if($delefolder) {
imap_deletemailbox($mbox,$ish."INBOX.".$delefolder);
}
echo "<script> window.location='webmail.php?CMD=folders'; </SCRIPT>";
} elseif($CMD == "leftframe") {
if($type == "POP3") {
$mbox=imap_open("{".$session_server.":110/pop3}", $session_username, $session_password) or exit;
} elseif($type == "IMAP") {
$mbox=imap_open("{".$session_server."}",$session_username,$session_password) or exit;
}
echo "<meta HTTP-EQUIV='refresh' CONTENT='300'>\n";
echo "<style>\n";
echo "A { color:yellow; }\n";
echo "</STYLE>\n";
echo "<form NAME=thising>\n";
echo "<body BGCOLOR=BLUE><font COLOR=WHITE>\n";
echo "<select NAME='selectfolder' ONCHANGE='window.parent.msg.location=document.thising.selectfolder.options[document.thising.selectfolder.selectedIndex].value'>\n";
if($type == "POP3") {
$folder = imap_listmailbox($mbox,"{".$server.":110/pop3}","*");
} elseif($type == "IMAP") {
$folder = imap_listmailbox($mbox,"{".$server."}","*");
}
while(list($key,$val) = each($folder)) {
if($type == "POP3") {
$status = imap_status($mbox,"{".$server.":110/pop3}INBOX",SA_ALL);
$val = str_replace("{".$server.":110/pop3}", "", $val);
} else {
$status = imap_status($mbox,"{".$server."}INBOX",SA_ALL);
$val = str_replace("{".$server."}", "", $val);
}
echo "<option VALUE='webmail.php?CMD=topframe&folder=".urlencode($val)."'>$val</option>\n";
}
echo "</select>";
echo "<br><br>NewMail 0.7<br><br>";
echo "<a HREF='webmail.php?CMD=topframe' TARGET='msg'>INBOX</a><br><br><br><br>";
echo "<a HREF='webmail.php?CMD=compose' TARGET='compwin'>Compose</a><br><br><br><br>";
echo "<a HREF='webmail.php?CMD=logout' TARGET='_top'>Log Out</a><br><br>";
echo "<a HREF='webmail.php?CMD=folders' TARGET='msg'>Folders</a><br><br>";
echo "</body>";
if($status->unseen) {
echo "<!-- $status->unseen messages(unseen) -->";
}
} elseif($CMD == "logout") {
session_destroy();
echo "<center><h1>Log Out</h1>\n";
echo "You have been logged out. <a href='webmail.php'>Re-Login</a>";
if($ReturnToPageLink) {
echo "<br><br><br><a HREF='$ReturnToPageLink?returnedfrom=NewMail'>Return to $ReturnToPageLink</a>";
}
echo "</center>";
} elseif($CMD == "send") {
$h="From: $fr\n";
if($cc) $h.="CC: $cc\n";
if($bcc) $h.="BCC: $bcc\n";
mail($to,$su,$ms,$h);
echo "Mail is Sent.<br>";
echo "<a HREF='javascript:with(window) close()'>Close</a>\n";
} elseif($CMD == "framed") {
echo "<html>\n";
echo "<frameset frameborder='NO' border='0' framespacing='0' COLS='109,*'>\n";
echo "<frame SRC='webmail.php?CMD=leftframe' NAME='left' SCROLLING=no>\n";
echo "<frame SRC='webmail.php?CMD=topframe' NAME='msg'>\n";
echo "</frameset>";
echo "</html>\n";
} elseif($CMD == "cookie") {
session_register("session_server"); $session_server=$host;
session_register("session_username"); $session_username=$user;
session_register("session_password"); $session_password=$pass;
session_register("type"); $type = $opt;
echo "<script> window.location='webmail.php?CMD=framed' </SCRIPT>";
} elseif($CMD == "GetCode") {
echo "<pre>";
echo "<html>\n";
echo "<form action='http://www.101h.com/~stevenc/webmail.php?CMD=cookie' method='post'>\n";
echo "<center><h1>Mail Check - Your Name Here </h1></center>\n";
echo "Username: <input type='text' name='user'><BR>\n";
echo "Password: <input type='password' name=pass><BR>\n";
echo "Server: Stored<BR>\n";
echo "<input type='hidden' name='host' value='your.server.here'>\n";
echo "<input type='hidden' name='opt' value='IMAP'><!-- for POP3, just enter POP3 -->\n";
echo "<input type=submit value='Login'>\n</form>\n";
echo "</pre><br><br>";
echo "<a HREF='webmail.php'>Return</a>";
} else {
if($session_username || $session_password || $session_server || $type) {
echo "<SCRIPT> window.location='webmail.php?CMD=framed'; </SCRIPT>";
exit;
}
echo "<form ACTION='webmail.php?CMD=cookie' METHOD='post'>\n";
echo "<center><h1>Mail Checking</h1>\n";
echo "Username: <input TYPE='text' NAME='user'><br>\n";
echo "Password: <input TYPE='password' NAME='pass'><br>\n";
echo "<input type='hidden' name='host' value='$serverdo'>\n";
echo "<input type='hidden' name='opt' value='$optionvalue'>\n";
echo "<input type='submit' value='Log in'>\n</form><br>\n";
echo "<br><br><br>\n";
echo "This is now Web mail! <a HREF='webmail.php?CMD=GetCode'>Get the Code</a> Here!";
}
?>