'; if($error) { global $redirect,$attbox,$usessid,$writeto,$writecc,$writebcc,$writesubject,$writebody,$savetodrafts,$xwritesentcopy,$writepriority,$Old_Folder,$Old_Message,$copyfolder,$messageid; echo '
'.(is_array($attbox)?'':'').'
'; } if($error || !$specialpath) echo ''; exit; } } else header("Location: readmail.html?id=$id&senderror=$error&sendtext=".urlencode($text)."&folder=".urlencode($folder)."&Send_x=1&Delete_Message=" . $Delete_Message . "&writesentcopy=$writesentcopy&sendhtml=$sendhtml"); if ($specialpath=="pda") { retrievemail(1); header("Location: get.html?id=" .$id); } exit; } if (!$savetodrafts && $writeto == "" && $writecc == "" && $writebcc == "") doredirect(true, $norecipient["MESSAGES"]); //RFC line length check $writebody=wordwrap($writebody, 998 ,"\r\n",1); include_once("inc/function.groups.php"); getusersession($id, $user, $config); $from = getemail($config["EMAIL"],$config["FULLNAME"]); $to = array(); //convert body and subjec into specified charsed if(!$writecharset || $writecharset=="none") $writecharset = charset; list(,$sendcharset) = explode(";",$charset_settings[$writecharset]); if ($sendcharset=="us-ascii") unset($sendcharset); else { $writebody=charsetconvert($writebody,mycharset,$sendcharset); $writesubject=charsetconvert($writesubject,mycharset,$sendcharset); } if ($config["REPLYTO"]) $replyto = $config["REPLYTO"]; else{ if (!$personality) $replyto = getemail($config["EMAIL"], $config["FULLNAME"]); else{ $persarr[0] = $personality; $persarr = makeproperemailline($persarr); $replyto = $persarr[0]?$persarr[0]:getemail($config["EMAIL"], $config["FULLNAME"]); } } $replyto = putheader($replyto,$sendcharset,1); $message = "Date: " . Date("r") . "\r\n"; if ($personality) $message .= "From: " . $replyto . "\r\n"; else $message .= "From: " . putheader($from,$sendcharset,1) . "\r\n"; $message .= "Reply-To: " . $replyto . "\r\n"; function generatelist($field, $name, $blind = false, $add = false) { global $message,$to,$id,$DBactive,$user,$config,$otherconfig,$sessid; $tolist = emaillist($field); if (count($tolist > 0)) { $toaddresses = ""; require_once("inc/function.calendar.php"); for ($i = 0; $i < count($tolist); $i++) { if (trim($tolist[$i])!== "") { $item = trim($tolist[$i]); if (!isgroup($item)) { $fitem = getemail($item); if (strpos($fitem, "(")) $fitem = trim(substr($fitem, 1, strpos($fitem, "(") - 2)); $to[] = $fitem; if (!$blind) { $fname = getmailname($item, true); if(ereg("[\,\; ]",$fname)) $fname='"'.str_replace('"','',$fname).'"'; if ($fname) { if($sendcharset) $fname=charsetconvert($fname,mycharset,$sendcharset); $item = trim(putheader($fname,$sendcharset) . " " . $fitem); } if ($toaddresses == "") $toaddresses .= $item; else $toaddresses .= addressdelimiter . "\r\n " . $item; } } else { if($DBactive) $sessid=logtocalendar($user,$config['EMAIL'],$config['PASS'],1); $item2 = getgrouplist($id, substr($item, 1, strlen($item) - 2)); if(!$item2){ if($DBactive) $sessid=logtocalendar($user,$config['EMAIL'],$config['PASS'],$otherconfig[GLOBALGWACCOUNT]); $item2 = getgrouplist($id, substr($item, 1, strlen($item) - 2),false); } $list .= generatelist($item2, $name, $blind, true); if ($list && !$blind) { if ($toaddresses == "") $toaddresses .= $list; else $toaddresses .= addressdelimiter . "\r\n " . $list; } } } } if ($toaddresses != "" && !$blind) { if (!$add) $message .= $name . $toaddresses . "\r\n"; else return $toaddresses; } } } //////////////////////////////////////////////// generatelist($writeto, "To: "); generatelist($writecc, "Cc: "); generatelist($writebcc, "Bcc: ", !$savetodrafts); if ($returnreceipt) $message .= "Disposition-Notification-To: " . $replyto . "\r\n"; $message .= "Subject: " . putheader($writesubject,$sendcharset) . "\r\n"; $message .= "Message-ID: <" . md5(uniqid("")) .strstr($config["EMAIL"],"@"). ">\r\n"; $message .= "X-Mailer: " . webmail . "\r\n"; $message .= "X-Originating-IP: " . $REMOTE_ADDR . "\r\n"; $message .= "MIME-Version: 1.0\r\n"; switch($writepriority){ case '0':$message .= "X-Priority: Low\r\n"; break; case '2':$message .= "X-Priority: High\r\n"; break; } // check attachments if ($usessid && is_array($attbox) && count($attbox)) $anywriteattach = true; else $anywriteattach = false; if ($anywriteattach)// || $forwardfile !$savetodrafts && { $boundary = "--" . strtoupper(md5(uniqid(""))); $message .= "Content-Type: multipart/mixed; boundary=\"" . $boundary . "\"\r\n\r\n"; $message .= "This is a multi-part message in MIME format.\r\n"; $message .= "--" . $boundary . "\r\n"; } if ($sendhtml) { $htmlboundary = "--" . strtoupper(md5(uniqid(""))); $message .= "Content-Type: multipart/alternative; boundary=\"" . $htmlboundary . "\"\r\n\r\n"; $message .= "--" . $htmlboundary . "\r\n"; $message .= "Content-Type: text/plain; charset=\"" . ($sendcharset?$sendcharset:'us-ascii') . "\"\r\n"; $message .= "Content-Transfer-Encoding: " . contentencoding . "\r\n"; $message .= "\r\n"; $plainmessage = removehtml($writebody); $message .= dotconvert($plainmessage); $message .= "\r\n--" . $htmlboundary . "\r\n"; } $message .= "Content-Type: ".($sendhtml?'text/html':'text/plain')."; charset=\"" . ($sendcharset?$sendcharset:'us-ascii') . "\"\r\n"; $message .= "Content-Transfer-Encoding: " . contentencoding . "\r\n"; $message .= "\r\n"; if ($headerfooter && $headerfile) { if (@$file = fopen($headerfile, "rb")) { $attach = fread($file, filesize($headerfile)); fclose($file); $message .= dotconvert($attach); } } $message .= dotconvert($writebody); if ($headerfooter && $footerfile) // !$savetodrafts && { if (@$file = fopen($footerfile, "rb")) { $attach = fread($file, filesize($footerfile)); fclose($file); $message .= dotconvert($attach); } } if ($sendhtml) $message .= "\r\n--" . $htmlboundary . "--\r\n"; if ($anywriteattach) { require_once('inc/function.view.php'); $oAttach = new upAttachment($usessid); if ($oAttach->validateusession($usessid)){ $aAtt_array = $oAttach->getAttachments(); foreach ($aAtt_array as $aAtt) { if (!in_array($aAtt['id'],$attbox)) continue; $message .= "\r\n--" . $boundary . "\r\nContent-Type: " . $aAtt['type'] . '; name="' . putheader(charsetconvert($aAtt['name'],mycharset,$sendcharset),$sendcharset) . "\"\r\n"; if (strtolower($aAtt['type'])=='message/rfc822') { $message .= "Content-Transfer-Encoding: 7bit\r\nContent-Disposition: inline;\r\n filename=\"".putheader($aAtt['name'],$sendcharset)."\"\r\n\r\n"; if (@$file = fopen($aAtt['path'], "rb")) { $msgbody = trim(fread($file, filesize($aAtt['path']))); if(ereg("[0-9]",$msgbody[0])) $msgbody = substr($msgbody,strpos($msgbody,"\r\n")+2); // If not IMAP then check at the end and remove it if ($aAtt['ext'] == messageext && strlen($msgbody) > 0 && $msgbody[strlen($msgbody)-1] == ".") $msgbody = substr($msgbody, 0, -1); $message .= $msgbody; unset($msgbody); fclose($file); } } else { $message .= "Content-Transfer-Encoding: base64\r\n\r\n"; $message .= imap_binary(file_get_contents($aAtt['path'])); } } //$oAttach->removeSession(); //unset($oAttach); } $message .= "\r\n--" . $boundary . "--"; } //////////////////////////////////////////////////// if ($redirect && $Old_Folder && $Old_Message) { $redirectfile = getfolderpath($user, $Old_Folder, $Old_Message); if ($redirectfile) { $message = ""; if (@$file = fopen($redirectfile, "rb")) { $message = trim(fread($file, filesize($redirectfile))); // strip merak imap number if(ereg("[0-9]",$message[0])) $message = substr($message,strpos($message,"\r\n")+2); // If not IMAP then check at the end and remove it if (strtolower(substr($redirectfile,strrpos($redirectfile,'.'))) == imapmessageext && strlen($message) > 0 && $message[strlen($message)-1] == ".") $message = substr($message, 0, -1); fclose($file); } } } if (!$otherconfig["DISABLEMAXMESSAGE"] && strlen($message) > $otherconfig["MAXMESSAGE"] * 1024) doredirect(true, $maxmessageinfo["MESSAGE"]); if (!$savetodrafts) { include_once("smtppop3.html"); if ($smtphost) $smtp = new smtp($smtphost, $smtpport, $connected); } if ((!($savetodrafts)) && (!($connected) || !($smtphost))) doredirect(true, $couldnotconnect["MESSAGE"]); $failure = false; if (!$savetodrafts) { if ($writesign || $writeencrypt) { require_once("inc/function.smime.php"); $certfile = smimeprocessmessage($user, $message, $to, $writeencrypt, $writesign); } $failure = !($smtp->smtpmail($config["EMAIL"], $to, $message)); } if ($failure) doredirect(true, $couldnotsend["MESSAGE"] . "\"" . $smtp->status["LASTRESULTTXT"] . "\""); // IMAP Work Around, POP3 Does not matter $message = "000000000000000000000000\r\n" . $message; if (!$savetodrafts) { if ($writesentcopy == "1") writesentcopy($id, $message, $copyfolder==""?sentfolder:$copyfolder , sentflag); $smtp->close(); $smtp = null; } else writesentcopy($id, $message, draftsfolder, readflag, $messageid); if (!$savetodrafts) $messagetext = $messagesent["MESSAGE"]; else $messagetext = $messagedrafts["MESSAGE"]; // delete attachment usession if ($anywriteattach && is_object($oAttach)) { $oAttach->removeSession(); $oAttach = null; } doredirect($false, $messagetext); ?>