<?php
$vars=array(); if(file_exists("variable.php.ini")) include("variable.php.ini"); else include("standard.php.ini");
$references=array(); if(file_exists("varreferences.php.ini")) include("varreferences.php.ini");
$accounts=array(); if(file_exists("varmails.php.ini")) include("varmails.php.ini");
include("functions.php");
$acc=$accounts[($_GET["source"]*-1)-1];
$msgno=$_GET["id"];
$accdata=explode(":",$acc);
$accdate="";
if($accdata[3]=="imap")
$ServerName = "{".$accdata[0]."/imap:143}INBOX"; // For a IMAP connection (PORT 143)
else
$ServerName = "{".$accdata[0]."/pop3:110}INBOX"; // For a POP3 connection (PORT 110)
if($accdata[0]=="imap.gmail.com")
$ServerName = "{".$accdata[0].":993/imap/ssl/novalidate-cert}INBOX"; // gmail IMAP
if($accdata[0]=="pop.gmail.com")
$ServerName = "{".$accdata[0].":995/pop3/ssl/novalidate-cert}INBOX"; // gmail POP3
$UserName = $accdata[1];
$PassWord = $accdata[2];
if($mbox = imap_open($ServerName, $UserName,$PassWord) or $mbox = imap_open(ereg_replace("}INBOX","/notls}INBOX",$ServerName), $UserName,$PassWord)) {
$overview=imap_fetch_overview($mbox,"$msgno:$msgno",0);
$header=$overview[0];
$headers["subject"]=$header->subject;
$headers["from"]=getname($header->from);
$fr2=ximap_utf8($headers["from"]);
if($fr2!="") $headers["from"]=$fr2;
$headers["from"]=getname($headers["from"]);
$headers["date"]=$header->date;
$sp2=trim(ximap_utf8(trim($headers["subject"])));
if($sp2) $headers["subject"]=$sp2;
$desccut=preg_replace("![^a-z0-9]+!","",strtolower(trim(strip_tags($headers["from"]))));
if(!empty($references[$desccut]) AND file_exists("images/references/".$references[$desccut])) {
$headers["image"]="images/references/".$references[$desccut];
}
$dataTxt = get_part($mbox, $msgno, "TEXT/PLAIN");
$dataHtml = get_part($mbox, $msgno, "TEXT/HTML");
$dataAtt = get_att($mbox, $msgno);
if ($dataTxt != "") {
$msgBody = ereg_replace("\n","<br>",$dataTxt);
$msgBody = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i","$1http://$2", $msgBody);
$msgBody = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@%]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>", $msgBody);
$msgBody = preg_replace("/mailto:([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,10}|[0-9]{1,3})(\]?))/i","$1",$msgBody);
$msgBody = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,10}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$msgBody);
} else {
$msgBody = preg_replace("/.*<body[^>]*>|<\/body>.*/si", "", $dataHtml);
}
$msgBody=fixEncoding($msgBody);
$headers["date"]=strtotime($headers["date"]);
echo '<div id="detailtext"><div class="msgtitle"><div class="text"><div class="data"><img src="images/icons/email.png">'.$accdata[0];
echo '</div><div class="title">'.$headers["subject"].'</div>';
if($headers["image"]) echo'<img src="'.$headers["image"].'" class="data">';
echo '<div class="data">';
if($headers["from"]) echo t("Editor").': '.$headers["from"].'<br>';
if($headers["date"]) echo t("Date").': '.date(t("Y/m/d H:i"),$headers["date"]).t("h")."<br>";
if($headers["subject"]) $titleadd=": ".$headers["subject"]; else $titleadd="";
if(empty($titleadd) && $headers["from"]) $titleadd=": ".$headers["from"];
echo '</div></div></div>';
echo '<div class="msgtext"><div class="text">'.$msgBody.'<br><br>';
// --- Show attachments ---
$browser=$_SERVER['HTTP_USER_AGENT'];
if(is_array($dataAtt)) {
$attcount=0;
foreach($dataAtt as $oneAtt){
$attcount++;
$pi=pathinfo($oneAtt["name"]);
echo'<span class="atttitle"><a href="showatt.php?source='.$_GET["source"].'&id='.$_GET["id"].'&file='.$attcount.'">'.$oneAtt["name"].'</a></span>';
if(preg_match("/msie (5|6|7|8)/i",$browser)){
} else {
if(preg_match('/(jpeg|jpg|gif|png)/i',$pi['extension'])) print"<img src='".showImg($oneAtt["attachment"],$pi['extension'],"image")."' title='".$oneAtt["name"]."' alt='".$oneAtt["name"]."'/><br>";
if(preg_match('/(wav|m4a|oga|mp3)/i',$pi['extension'])) print"<video src='".showImg($oneAtt["attachment"],$pi['extension'],"audio")."' controls></video><br>";
if(preg_match('/(m4v|ogv|mp4|ogg)/i',$pi['extension'])) print"<video src='".showImg($oneAtt["attachment"],$pi['extension'],"video")."' controls></video><br>";
}
if(preg_match('/(txt)/i',$pi['extension'])) print"<code>".nl2br(fixEncoding($oneAtt["attachment"]))."'</code><br>";
}
}
// ---
echo '</div></div>';
echo '<br clear="all">';
echo '<script type="text/javascript">document.title="newswall'.$titleadd.'";$("#panweb").data("url","");$("#pansha").data("url","");$("#pansha").data("title","");</script>';
echo '</div>';
} else {
echo '<div id="detailtext"><div class="msgtitle"><div class="text"><div class="data"><img src="images/icons/email.png">'.$accdata[0];
echo '</div><div class="title">'.t("Error: Can not connect to e-mail server").'</div>';
echo '</div></div>';
echo '<br clear="all">';
echo '<script type="text/javascript">$("#panweb").data("url","");$("#pansha").data("url","");$("#pansha").data("title","");</script>';
echo '</div>';
}
function get_mime_type(&$structure) {
$primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER");
if($structure->subtype) {
return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype;
}
return "TEXT/PLAIN";
}
function get_part($stream, $msg_number, $mime_type, $structure = false,$part_number = false) {
if(!$structure) {
$structure = imap_fetchstructure($stream, $msg_number);
}
if($structure) {
if($mime_type == get_mime_type($structure)) {
if(!$part_number) {
$part_number = "1";
}
$text = imap_fetchbody($stream, $msg_number, $part_number);
if($structure->encoding == 3) {
return imap_base64($text);
} else if($structure->encoding == 4) {
return imap_qprint($text);
} else {
return $text;
}
}
if($structure->type == 1) /* multipart */ {
while(list($index, $sub_structure) = each($structure->parts)) {
if($part_number) {
$prefix = $part_number . '.';
}
$data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1));
if($data) {
return $data;
}
}
}
}
return false;
}
function get_att($stream, $msg_number) {
$structure = imap_fetchstructure($stream, $msg_number);
$attachments = array();
$retattachments = array();
if(isset($structure->parts) && count($structure->parts)) {
for($i = 0; $i < count($structure->parts); $i++) {
$attachments[$i] = array(
'is_attachment' => false,
'filename' => '',
'name' => '',
'attachment' => ''
);
if($structure->parts[$i]->ifdparameters) {
foreach($structure->parts[$i]->dparameters as $object) {
if(strtolower($object->attribute) == 'filename') {
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['filename'] = $object->value;
}
}
}
if($structure->parts[$i]->ifparameters) {
foreach($structure->parts[$i]->parameters as $object) {
if(strtolower($object->attribute) == 'name') {
$attachments[$i]['is_attachment'] = true;
$attachments[$i]['name'] = $object->value;
}
}
}
if($attachments[$i]['is_attachment']) {
if($attachments[$i]['name']=="" AND $attachments[$i]['filename']!="")
$attachments[$i]['name']=$attachments[$i]['filename'];
if($attachments[$i]['filename']=="" AND $attachments[$i]['name']!="")
$attachments[$i]['filename']=$attachments[$i]['name'];
$attachments[$i]['attachment'] = imap_fetchbody($stream, $msg_number, $i+1);
if($structure->parts[$i]->encoding == 3) { // 3 = BASE64
$attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
}
elseif($structure->parts[$i]->encoding == 4) { // 4 = QUOTED-PRINTABLE
$attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
}
$retattachments[]=$attachments[$i];
}
}
}
return $retattachments;
}
function showImg($contents,$ext="jpg",$typ="image"){
$base64 = base64_encode($contents);
return ('data:'.$typ.'/'.$ext.';base64,'.$base64);
}
function fixEncoding($in_str) {
$cur_encoding = mb_detect_encoding($in_str) ;
if($cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return $in_str;
else
return utf8_encode($in_str);
}
?>
|