You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
13 KiB
354 lines
13 KiB
<?php
|
|
/*********************************************************************************
|
|
** The contents of this file are subject to the vtiger CRM Public License Version 1.0
|
|
* ("License"); You may not use this file except in compliance with the License
|
|
* The Original Code is: vtiger CRM Open Source
|
|
* The Initial Developer of the Original Code is vtiger.
|
|
* Portions created by vtiger are Copyright (C) vtiger.
|
|
* All Rights Reserved.
|
|
*
|
|
********************************************************************************/
|
|
|
|
//get the mail server info
|
|
global $current_user;
|
|
require_once('modules/Users/UserInfoUtil.php');
|
|
$mailInfo = getMailServerInfo($current_user);
|
|
$temprow = $adb->fetch_array($mailInfo);
|
|
if($temprow["mail_protocol"] == 'POP')
|
|
{
|
|
$ServerName = "{".$temprow["mail_servername"]."/pop3:110/notls}INBOX";
|
|
}
|
|
else
|
|
{
|
|
$ServerName = "{".$temprow["mail_servername"]."/imap:143/notls}INBOX";
|
|
// For a IMAP connection (PORT 143)
|
|
}
|
|
$UserName = $temprow["mail_username"];
|
|
$PassWord = $temprow["mail_password"];
|
|
|
|
$mbox = imap_open($ServerName, $UserName,$PassWord) or die("Could not open Mailbox - try again later!");
|
|
|
|
if ($hdr = imap_check($mbox)) {
|
|
echo "Total Messages :-> " . $hdr->Nmsgs ."\n\n<br><br>";
|
|
$msgCount = $hdr->Nmsgs;
|
|
} else {
|
|
echo "failed";
|
|
}
|
|
$MN=$msgCount;
|
|
$overview=imap_fetch_overview($mbox,"1:$MN",0);
|
|
$mime_type = get_mime_type($overview);
|
|
//$size=sizeof($overview);
|
|
$size = imap_num_msg($mbox);
|
|
|
|
global $app_strings,$current_user;
|
|
|
|
if(isset($_REQUEST['view']) && $_REQUEST['view']!='')
|
|
{
|
|
$msgid = $_REQUEST['view'];
|
|
$header = @imap_headerinfo($mbox, $msgid, 80, 80);
|
|
$fromaddress[$msgid] = $header->from[0]->host;
|
|
$domain = $fromaddress[$msgid];
|
|
$fromname[$msgid] = $header->from[0]->mailbox;
|
|
$sendername=$fromname[$msgid];
|
|
$from[$msgid]= $fromname[$msgid]."@".$fromaddress[$msgid];
|
|
$totalfromaddress = $sendername ."@".$domain;
|
|
$val=$overview[$msgid-1];
|
|
$msg=$val->msgno;
|
|
$from=$val->from;
|
|
$date=$val->date;
|
|
$subj=$val->subject;
|
|
//transformHTML($subj);
|
|
$seen=$val->seen;
|
|
|
|
$from = ereg_replace("\"","",$from);
|
|
|
|
echo '<script language="JavaScript">
|
|
var b;
|
|
browser = navigator.appName;
|
|
if (browser == "Microsoft Internet Explorer") {
|
|
b = "ie";
|
|
} else {
|
|
b = "other";
|
|
}
|
|
|
|
function handleFile(nr) {
|
|
if (b != "ie") {
|
|
alert("This feature is currently only available for Microsoft Internet Explorer 5.5+ users\n\nWait for an update!");
|
|
} else {
|
|
check = confirm("Do you want to download the file ?");
|
|
if (check) {
|
|
setTimeout("this.location.reload()",8000);
|
|
location.href="index.php?action=gotodownload&module=Emails&download=1&file="+ nr +"&msgno='.$msg.'"; } else {
|
|
location.reload();
|
|
}
|
|
}
|
|
}
|
|
</script>';
|
|
|
|
// MAKE DANISH DATE DISPLAY
|
|
list($dayName,$day,$month,$year,$time) = split(" ",$date);
|
|
$time = substr($time,0,5);
|
|
$date = $day ." ". $month ." ". $year . " ". $time;
|
|
|
|
if ($bgColor == "#F0F0F0") {
|
|
$bgColor = "#FFFFFF";
|
|
} else {
|
|
$bgColor = "#F0F0F0";
|
|
}
|
|
|
|
if (strlen($subj) > 60) {
|
|
$subj = substr($subj,0,59) ."...";
|
|
get_part();
|
|
}
|
|
|
|
echo get_module_title("Emails",'Emails', true);
|
|
echo "<br>";
|
|
echo "<form action='' method=post>";
|
|
echo '<table border="0" cellpadding="0" cellspacing="1" width="80%" class="formOuterBorder">';
|
|
echo '<tr><td class="formSecHeader" colspan=2>Email Information</td></tr>';
|
|
echo "<tr><td class='datalabel' width='15%'>From:</td><td>" . $from ."</td></tr>";
|
|
echo "<tr><td class='datalabel'>Date:</td><td>" .$date ."</td></tr>";
|
|
echo "<tr><td class='datalabel'>Subject:</td><td>" .$subj."</td></tr>";
|
|
echo "<tr><td class='datalabel' valign=top>Mail body:</td><td>";
|
|
$content = get_part($mbox,$msg,$mime_type);
|
|
echo nl2br($content);
|
|
echo "</td></tr></table>";
|
|
//get the attachment
|
|
$struct = imap_fetchstructure($mbox,$msg);
|
|
$contentParts = count($struct->parts);
|
|
if ($contentParts >= 2) {
|
|
for ($i=2;$i<=$contentParts;$i++) {
|
|
$att[$i-2] = imap_bodystruct($mbox,$msg,$i);
|
|
}
|
|
for ($k=0;$k<sizeof($att);$k++) {
|
|
if ($att[$k]->parameters[0]->value == "us-ascii" || $att[$k]->parameters[0]->value == "US-ASCII") {
|
|
if ($att[$k]->parameters[1]->value != "") {
|
|
$selectBoxDisplay[$k] = $att[$k]->parameters[1]->value;
|
|
}
|
|
}
|
|
elseif ($att[$k]->parameters[0]->value != "iso-8859-1" && $att[$k]->parameters[0]->value != "ISO-8859-1") {
|
|
$selectBoxDisplay[$k] = $att[$k]->parameters[0]->value;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (sizeof($selectBoxDisplay) > 0) {
|
|
echo "<br><select name=\"attachments\" size=\"3\" class=\"tblContent\" onChange=\"handleFile(this.value)\" style=\"width:170;\">";
|
|
for ($j=0;$j<sizeof($selectBoxDisplay);$j++) {
|
|
echo "\n<option value=\"$j\">". $selectBoxDisplay[$j] ."</option>";
|
|
}
|
|
echo "</select>";
|
|
}
|
|
|
|
echo '<form name=f1 action=index.php method=post>
|
|
<input type="hidden" name="module" value="Emails">
|
|
<input type="hidden" name="action">
|
|
<input type="hidden" name="return_module" value="Emails">
|
|
<input type="hidden" name="return_id" value="{RETURN_ID}">
|
|
<input type="hidden" name="return_action" value="mailbox">
|
|
<input type="hidden" name="from" value="'.$from .'">;
|
|
<input type="hidden" name="sname" value="'.$ServerName .'">
|
|
<input type="hidden" name="uname" value="'.$UserName .'">
|
|
<input type="hidden" name="passwd" value="'.$PassWord .'">';
|
|
|
|
|
|
|
|
$date_fmt = Array();
|
|
list($mday,$mmon,$myear,$mtime)=split(" ",$date);
|
|
$maildate = strtotime($mday." ".$mmon." ".$myear);
|
|
list($date_fmt[0],$date_fmt[1],$date_fmt[2]) = split("-",$current_user->date_format);
|
|
for($i=0;$i<=2;$i++)
|
|
{
|
|
if(stristr($date_fmt[$i],"d"))
|
|
$date_fmt[$i] = "d";
|
|
elseif(stristr($date_fmt[$i],"m"))
|
|
$date_fmt[$i] = "m";
|
|
elseif(stristr($date_fmt[$i],"y"))
|
|
$date_fmt[$i] = "Y";
|
|
}
|
|
#echo date("$date_fmt[0]-$date_fmt[1]-$date_fmt[2]",$maildate);
|
|
echo '<input type=hidden name="date_start" value="'.date("$date_fmt[0]-$date_fmt[1]-$date_fmt[2]",$maildate).'">
|
|
<input type=hidden name="time_start" value="'.$mtime.'">
|
|
<input type=hidden name="assigned_user_id" value="'.$current_user->id.'">
|
|
<input type=hidden name="description" value="'.$content.'">
|
|
<input type=hidden name="subject" value="'.$subj.'">
|
|
<input type=hidden name="fromemail" value="'.$totalfromaddress.'">
|
|
<br><input type=checkbox name=addbox value=Add> Add to vtiger CRM <br>
|
|
<input type=checkbox name=deletebox value='.$msg.'> Delete from Mail Server <br>';
|
|
echo '<br><table width=80%><tr><td align=center><input title="'.$app_strings[LBL_ADD_VTIGER_BUTTON_TITLE].'" accessKey="'.$app_strings['LBL_ADD_VTIGER_BUTTON_KEY'].'" class="button" onclick="this.form.action.value=\'Save\';" type="submit" name="button" value="'.$app_strings['LBL_SAVE_LABEL'].'"> <input class=button type=button value=Cancel onclick="window.history.back()" ></td></tr></table>
|
|
</form>';
|
|
|
|
}
|
|
else
|
|
{
|
|
echo get_module_title("Emails",'Emails', true);
|
|
echo "<br>";
|
|
echo "<form action='index.php>module=Emails&action=Save' method=post>";
|
|
echo '<table border="0" cellpadding="0" cellspacing="0" width="80%"><tr><td>';
|
|
echo get_form_header("Received Emails", "<table width=\"100%\" border=\"0\" cellpadding=\"1\" cellspacing=\"0\"><tr></tr></table>", false );
|
|
echo "</td></tr></table>";
|
|
echo '<table border="0" cellpadding="0" cellspacing="0" class="FormBorder" width="80%">';
|
|
echo '<tr class="ModuleListTitle" height=20>';
|
|
echo '<td width="10" class="moduleListTitle" style="padding:0px 3px 0px 3px;"></td>';
|
|
echo '<td width="15" class="moduleListTitle" style="padding:0px 3px 0px 3px;"><input type="checkbox" name="selectall" onClick=toggleSelect(this.checked,"selected_id")></td>';
|
|
echo '<td width="" class="moduleListTitle" style="padding:0px 3px 0px 3px;">Sender</td>';
|
|
echo '<td width="" class="moduleListTitle" style="padding:0px 3px 0px 3px;">Subject</td>';
|
|
echo '<td width="" class="moduleListTitle" style="padding:0px 3px 0px 3px;">Date</td>';
|
|
echo '</tr>';
|
|
|
|
for($i=$size-1;$i>=0;$i--)
|
|
{
|
|
$j = $i+1;
|
|
$header = @imap_headerinfo($mbox, $j, 80, 80);
|
|
|
|
$fromaddress[$j] = $header->from[0]->host;
|
|
$domain = $fromaddress[$j];
|
|
$fromname[$j] = $header->from[0]->mailbox;
|
|
$sendername=$fromname[$j];
|
|
$sender[$j]= $fromname[$j]."@".$fromaddress[$j];
|
|
$totalfromaddress = $sendername ."@".$domain;
|
|
|
|
$val=$overview[$i];
|
|
$msg=$val->msgno;
|
|
$from=$val->from;
|
|
|
|
$date=$val->date;
|
|
$subj=$val->subject;
|
|
//transformHTML($subj);
|
|
$seen=$val->seen;
|
|
//imap_delete($mbox, 1);
|
|
//imap_expunge($mbox);
|
|
|
|
$from = ereg_replace("\"","",$from);
|
|
|
|
// MAKE DANISH DATE DISPLAY
|
|
list($dayName,$day,$month,$year,$time) = split(" ",$date);
|
|
$time = substr($time,0,5);
|
|
$date = $day ." ". $month ." ". $year . " ". $time;
|
|
|
|
if ($bgColor == "#F0F0F0") {
|
|
$bgColor = "#FFFFFF";
|
|
$rowClass = "oddListRow";
|
|
} else {
|
|
$bgColor = "#F0F0F0";
|
|
$rowClass = "evenListrow";
|
|
}
|
|
|
|
if (strlen($subj) > 60) {
|
|
$subj = substr($subj,0,59) ."...";
|
|
get_part();
|
|
}
|
|
|
|
echo "<tr class=\"$rowClass\"><td height=\"21\" style=\"padding:0px 3px 0px 3px;\">$msg</td><td style=\"padding:0px 3px 0px 3px;\"><input type=checkbox NAME=\"selected_id\" onClick=toggleSelectAll(this.name,\"selectall\")>$sendername</td><td style=\"padding:0px 3px 0px 3px;\">$totalfromaddress </td><td style=\"padding:0px 3px 0px 3px;\"><a href=\"index.php?action=mailbox&module=Emails&view=".$j."\">$subj</a></td>
|
|
<td style=\"padding:0px 3px 0px 3px;\">$date</td></tr>\n ";
|
|
}
|
|
|
|
echo "</table>";
|
|
echo "</form>";
|
|
}
|
|
imap_close($mbox);
|
|
|
|
|
|
|
|
|
|
|
|
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 . '.';
|
|
$prefix = $part_number ;
|
|
}
|
|
$data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1));
|
|
if($data) {
|
|
return $data;
|
|
}
|
|
} // END OF WHILE
|
|
} // END OF MULTIPART
|
|
} // END OF STRUTURE
|
|
return false;
|
|
} // END OF FUNCTION
|
|
|
|
|
|
/*
|
|
// GET TEXT BODY
|
|
$dataTxt = get_part($mbox, $msgno, "TEXT/PLAIN");
|
|
|
|
// GET HTML BODY
|
|
$dataHtml = get_part($mbox, $msgno, "TEXT/HTML");
|
|
|
|
if ($dataHtml != "") {
|
|
$msgBody = $dataHtml;
|
|
$mailformat = "html";
|
|
} else {
|
|
$msgBody = ereg_replace("\n","<br>",$dataTxt);
|
|
$mailformat = "text";
|
|
}
|
|
// To out put the message body to the user simply print $msgBody like this.
|
|
|
|
if ($mailformat == "text") {
|
|
echo "<html><head><title>Messagebody</title></head><body bgcolor=\"white\">$msgBody</body></html>";
|
|
} else {
|
|
echo $msgBody; // It contains all HTML HEADER tags so we don't have to make them.
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
function transformHTML($str) {
|
|
if ((strpos($str,"<HTML") < 0) || (strpos($str,"<html") < 0)) {
|
|
$makeHeader = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"></head>\n";
|
|
if ((strpos($str,"<BODY") < 0) || (strpos($str,"<body") < 0)) {
|
|
$makeBody = "\n<body>\n";
|
|
$str = $makeHeader . $makeBody . $str ."\n</body></html>";
|
|
} else {
|
|
$str = $makeHeader . $str ."\n</html>";
|
|
}
|
|
} else {
|
|
$str = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\n". $str;
|
|
}
|
|
return $str;
|
|
}
|
|
|
|
if ($dataHtml != "") {
|
|
$msgBody = transformHTML($dataHtml);
|
|
} else {
|
|
$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("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<A HREF=\"mailto:$1\">$1</A>",$msgBody);
|
|
}
|
|
|
|
|
|
?>
|
|
|