Index: branches/unlabeled/unlabeled-1.14.2/core/kernel/utility/email.php =================================================================== diff -u -r5434 -r5567 --- branches/unlabeled/unlabeled-1.14.2/core/kernel/utility/email.php (.../email.php) (revision 5434) +++ branches/unlabeled/unlabeled-1.14.2/core/kernel/utility/email.php (.../email.php) (revision 5567) @@ -136,12 +136,12 @@ $this->Compiled = false; } - + function convertHTMLtoPlain($text) { $search = Array ( "'(<\/td>.*)[\r\n]+(.*)|(<\/p>)|(<\/div>)|(<\/tr>)'i", + "'([\r\n]{0,2})|(<\/p>)|(<\/div>)|(<\/tr>)'i", "'(.*?)'si", "''si", "'(.*?)'si", @@ -182,12 +182,12 @@ ); return strip_tags( preg_replace ($search, $replace, $text) ); } - + function compileBody(){ - + if($this->BodyHtml){ $not_html = $this->convertHTMLtoPlain($this->BodyHtml); - + // $not_html = $this->removeBlankLines($not_html); // Fixing problem with add exclamation characters "!" into the body of the email. $not_html = wordwrap($not_html, 72); Index: branches/unlabeled/unlabeled-1.14.2/admin/email/do_send.php =================================================================== diff -u -r5434 -r5567 --- branches/unlabeled/unlabeled-1.14.2/admin/email/do_send.php (.../do_send.php) (revision 5434) +++ branches/unlabeled/unlabeled-1.14.2/admin/email/do_send.php (.../do_send.php) (revision 5567) @@ -27,10 +27,10 @@ require_once($pathtoroot.$admin."/browse/toolbar.php"); //Set Section -$section = 'in-portal:sendmail'; +$section = 'in-portal:sendmail'; //Set Environment Variable -$envar = "env=" . BuildEnv(); +$envar = "env=" . BuildEnv(); $State = $_POST["EmailState"]; if(!strlen($State)) @@ -65,19 +65,19 @@ function getEmailFooter($is_html = true) { static $footer = Array('html' => null, 'plain' => null); - - $footer_body =& $footer[$is_html ? 'html' : 'plain']; + + $footer_body =& $footer[$is_html ? 'html' : 'plain']; if (is_null($footer_body)) { $application =& kApplication::Instance(); $email_object =& $application->recallObject('kEmailMessage'); $email_object->Clear(); - + $sql = 'SELECT em.Template FROM '.TABLE_PREFIX.'EmailMessage em LEFT JOIN '.TABLE_PREFIX.'Events e ON e.EventId = em.EventId WHERE em.LanguageId = '.$application->GetVar('m_lang').' AND e.Event = "COMMON.FOOTER"'; $footer_body = explode("\n\n", $application->Conn->GetOne($sql)); - $footer_body = "\r\n".($is_html ? $footer_body[1] : $email_object->convertHTMLtoPlain($footer_body[1])); + $footer_body = "\r\n".($is_html ? '
'.$footer_body[1] : $email_object->convertHTMLtoPlain($footer_body[1])); } return $footer_body; } @@ -89,14 +89,14 @@ case "email_single_send": /*single user send */ $PageTitle = admin_language("la_Title_SendInit"); $Subject = $_POST["subject"]; - $Html = $_POST["messageHTML"].getEmailFooter(true); - $Text = strip_tags($_POST["messageTEXT"]).getEmailFooter(false); - + $Html = $_POST["messageHTML"]; + $Text = strip_tags($_POST["messageTEXT"]); + if(is_array($_FILES)) { $attatch = $_FILES["attatchment"]; if(strlen($attatch["name"]) >0 && $attatch["size"]>0) - { + { $FileName = $attatch["name"]; $FileLoc = $attatch["tmp_name"]; } @@ -111,22 +111,22 @@ $FileName = NULL; $FileLoc = NULL; } - $charset = ""; + $charset = ""; $TargetURL .= "&EmailState=email_send_complete"; break; case "email_multi_send": /*Init multiuser send*/ $UserList = explode(",",$_POST["sendaddrs"]); //echo $_POST["sendaddrs"]."
\n"; - + $Subject = $_POST["subject"]; - $Html = $_POST["messageHTML"].getEmailFooter(true); - $Text = strip_tags($_POST["messageTEXT"]).getEmailFooter(false); + $Html = $_POST["messageHTML"]; + $Text = strip_tags($_POST["messageTEXT"]); if(is_array($_FILES)) { $attatch = $_FILES["attatchment"]; if(strlen($attatch["name"]) >0 && $attatch["size"]>0) - { + { $FileName = $attatch["name"]; $FileLoc = $attatch["tmp_name"]; } @@ -142,15 +142,15 @@ $FileLoc = NULL; } - $charset = ""; - $PageTitle = admin_language("la_Title_SendMailInit"); + $charset = ""; + $PageTitle = admin_language("la_Title_SendMailInit"); $TargetURL .="&EmailState=email_send_progress&Start=0&Total=".count($UserList); break; case "email_send_progress": $total = $_GET["Total"]; $start = $_GET["Start"]; if($start < $total) - { + { $pct = (int)(($start/$total)*100); $NewStart = $start+$MessagesPerPage; $TargetURL .= "&EmailState=email_send_progress&Start=$NewStart&Total=$total"; @@ -165,7 +165,7 @@ case "email_send_complete": $PageTitle = admin_language("la_Title_SendMailComplete"); $TargetURL=""; - break; + break; case "email_user_cancel": $PageTitle = admin_language("la_Title_SendMailCancel"); $TargetURL = ""; @@ -174,18 +174,22 @@ } int_header(NULL,NULL,admin_language("la_Title_PleaseWait")); - echo "\n"; + echo "\n"; /*do page functions */ // echo "Current State:". $State."
\n"; +if ($Html) $Html .= getEmailFooter(true); +if ($Text) $Text .= getEmailFooter(false); + + echo "
"; switch($State) { case "email_single_send": /*single user send */ $PageTitle = admin_language($Pagetitle); $ToAddr = $_POST["sendaddrs"]; - + $SendQueue->SendMail($FromAddr,$FromName,$ToAddr,"",$Subject,$Text,$Html,$charset, "",$FileName,$FileLoc,0, NULL); $o = ""; $o .= int_subsection_title_ret($PageTitle); @@ -207,11 +211,11 @@ $ado->Execute($sql); //echo $sql."
\n"; for($i=0;$iSendMail($FromAddr,$FromName,$ToAddr,"",$Subject,$Text,$Html,$charset, "",$FileName,$FileLoc,1, NULL); - } + } break; case "email_send_progress": $sql = "SELECT * FROM $table LIMIT $start,".$MessagesPerPage; @@ -220,7 +224,7 @@ while($rs && !$rs->EOF) { $data = $rs->fields; - + $SendQueue->DeliverMail($data["toaddr"],$data["fromaddr"],$data["Subject"],$data["message"],$data["headers"],1); $rs->MoveNext(); } @@ -259,7 +263,7 @@ ?> + Index: branches/unlabeled/unlabeled-1.57.2/kernel/include/emailmessage.php =================================================================== diff -u -r5445 -r5567 --- branches/unlabeled/unlabeled-1.57.2/kernel/include/emailmessage.php (.../emailmessage.php) (revision 5445) +++ branches/unlabeled/unlabeled-1.57.2/kernel/include/emailmessage.php (.../emailmessage.php) (revision 5567) @@ -73,15 +73,16 @@ LEFT JOIN '.TABLE_PREFIX.'Events e ON e.EventId = em.EventId WHERE em.LanguageId = '.$this->Get('LanguageId').' AND e.Event = "COMMON.FOOTER"'; $footer = explode("\n\n", $this->Conn->GetOne($sql)); - + $email_object = &$this->Application->recallObject('kEmailMessage'); $email_object->Clear(); - - $footer = $this->Get('MessageType') == 'text' ? $email_object->convertHTMLtoPlain($footer[1]) : $footer[1]; - $template = $this->Get('Template'); //."\r\n".$footer; + $footer = $this->Get('MessageType') == 'text' ? $email_object->convertHTMLtoPlain($footer[1]) : '
'.$footer[1]; + + $template = $this->Get('Template')."\r\n".$footer; // add footer: end + $template = str_replace("\r", '', $template); $lines = explode("\n", $template); $header_end = false; $i = 0; @@ -104,10 +105,10 @@ $i++; } while ($ibody .= $lines[$i++]; + $this->body .= trim($lines[$i++])."\r\n"; } - - $this->body .= "\r".$footer; + +// $this->body .= "\r".$footer; $this->TemplateParsed = true; @@ -198,13 +199,13 @@ $charset = "ascii-us"; if($this->Get("MessageType")=="html") { - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset, $this->Get("Event"),NULL,$this->headers); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset, $this->Get("Event"),NULL,NULL,NULL,$this->headers); } else { - $body = nl2br($body); - $body = str_replace("
","\n",$body); - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); +// $body = nl2br($body); +// $body = str_replace("
","\n",$body); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,NULL,NULL,$this->headers); } /*$time = adodb_mktime(); @@ -258,12 +259,12 @@ if($this->Get("MessageType")=="html") { - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset, $this->Get("Event"),NULL,$this->headers); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset, $this->Get("Event"),NULL,NULL,NULL,$this->headers); } else { - $body = str_replace("\r", "", $body); - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); +// $body = str_replace("\r", "", $body); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,NULL,NULL,$this->headers); } /*$time = adodb_mktime(); @@ -304,12 +305,12 @@ $charset = "ascii-us"; if($this->Get("MessageType")=="html") { - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset,$this->Get("Event"),NULL,$this->headers); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset,$this->Get("Event"),NULL,NULL,NULL,$this->headers); } else { - $body = str_replace("\r", "", $body); - $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); +// $body = str_replace("\r", "", $body); + $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,NULL,NULL,$this->headers); } /* $time = adodb_mktime(); @@ -898,8 +899,7 @@ } } - function SendMail($From, $FromName, $ToAddr, $ToName, $Subject, $Text, $Html, $charset, $SendEvent, - $FileName="",$FileLoc="",$QueueOnly=0,$extra_headers = array()) + function SendMail($From, $FromName, $ToAddr, $ToName, $Subject, $Text, $Html, $charset, $SendEvent,$FileName="",$FileLoc="",$QueueOnly=0,$extra_headers = array()) { $HasFile = FALSE; $HasFile = (strlen($FileName)>0); @@ -924,6 +924,14 @@ $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', ".$conn->qstr($FromName).", ".$conn->qstr($sendTo).", ".$conn->qstr( str_replace("Subject:", "", $Subject) ).", $time, '$SendEvent')"; $conn->Execute($sql); + if(is_array($extra_headers)) + { + foreach ($extra_headers as $h) + { + $headers .= $h."\n"; + } + } + $msg .="This is a multi-part message in MIME format."."\n"."\n"; if($HasFile) { @@ -935,13 +943,6 @@ else { $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\""."\n"; } - if(is_array($extra_headers)) - { - for($i=0;$iGetADODBConnection();