Index: trunk/kernel/include/emailmessage.php =================================================================== diff -u -r3282 -r3508 --- trunk/kernel/include/emailmessage.php (.../emailmessage.php) (revision 3282) +++ trunk/kernel/include/emailmessage.php (.../emailmessage.php) (revision 3508) @@ -1,4 +1,4 @@ -LoadFromDatabase($MessageId); } - + function LoadEvent($event,$language=NULL) { global $objConfig, $objLanguages; if(!strlen($language)) $language = $objLanguages->GetPrimary(); $sql = "SELECT * FROM ".$this->tablename." WHERE EventId = $event AND LanguageId=$language"; - $rs = $this->adodbConnection->Execute($sql); + $rs = $this->adodbConnection->Execute($sql); if($rs && !$rs->EOF) { $data = $rs->fields; @@ -44,7 +44,7 @@ function LoadFromDatabase($MessageId) { global $Errors; - + $sql = sprintf("SELECT * FROM ".$this->tablename." WHERE ".$this->IdField()." = '%s'",$MessageId); $result = $this->adodbConnection->Execute($sql); if ($result === FALSE) @@ -74,20 +74,20 @@ { $h = $lines[$i]; if(strlen(trim($h))==0 || ($h==".")) - { + { $header_end = TRUE; } else { $parts = explode(":",$h,2); - + if(strtolower($parts[0])=="subject") - { + { $this->subject = $h; } else $this->headers[] = $h; - } + } $i++; } while($iParseTemplateText($text); - + /* parse email class tags */ if(!is_object($this->fromuser)) { @@ -119,21 +119,21 @@ /* parse recipient user object */ if(is_object($this->recipient)) - { + { $res = $this->recipient->ParseTemplateText($res); } //print_pre($this->Item); if(is_object($this->Item)) - { + { $res = $this->Item->ParseTemplateText($res); } else { - + if(!is_object($objTemplate)) $objTemplate = new clsTemplateList(" "); - $res = $objTemplate->ParseTemplateText($res); + $res = $objTemplate->ParseTemplateText($res); } return $res; @@ -161,10 +161,10 @@ //$this->recipient = $objUsers->GetUser($UserId); //$this->recipient->TagPrefix="touser"; if(strlen($EmailAddress)) - { + { $to_addr = $EmailAddress; $this->ReadTemplate(); - + $subject = $this->ParseSection($this->subject); $body = $this->ParseSection($this->body); @@ -174,11 +174,11 @@ $FromName = trim($this->fromuser->Get("FirstName")." ".$this->fromuser->Get("LastName")); } if(!strlen($FromAddr)) - { + { $FromName = strip_tags( $objConfig->Get('Site_Name') ); - $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); - } - + $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); + } + $charset = "ascii-us"; if($this->Get("MessageType")=="html") { @@ -190,12 +190,12 @@ $body = str_replace("
","\n",$body); $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); } - + /*$time = adodb_mktime(); - + $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', '$FromName', '$To', '$subject', $time, '')"; - $conn->Execute($sql); */ - + $conn->Execute($sql); */ + return TRUE; } return FALSE; @@ -205,22 +205,22 @@ function SendToUser($UserId) { global $objUsers, $objEmailQueue, $objConfig; - + $conn = &GetADODBConnection(); //echo "Handling Event ".$this->Get("Event")." for user $UserId
\n"; $this->recipient = new clsPortalUser($UserId); // $objUsers->GetItem($UserId); //echo "
";print_r($this->recipient); echo "
"; $this->recipient->TagPrefix="touser"; if($this->recipient->Get("PortalUserId")==$UserId) - { + { $to_addr = $this->recipient->Get("Email"); $To = trim($this->recipient->Get("FirstName")." ".$this->recipient->Get("LastName")); $this->ReadTemplate(); $subject = $this->ParseSection($this->subject, $this->recipient); $body = $this->ParseSection($this->body); - + if(!is_object($this->fromuser)) { $this->fromuser = $objUsers->GetItem($this->Get("FromUserId")); @@ -229,17 +229,17 @@ { $FromAddr = $this->fromuser->Get("Email"); $FromName = trim($this->fromuser->Get("FirstName")." ".$this->fromuser->Get("LastName")); - + $charset = "ascii-us"; } - + if(!strlen($FromAddr)) - { + { $FromName = strip_tags( $objConfig->Get('Site_Name') ); - $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); + $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); } // echo $this->Event; - + if($this->Get("MessageType")=="html") { $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset, $this->Get("Event"),NULL,$this->headers); @@ -250,12 +250,12 @@ $body = str_replace("
","\n",$body); $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); } - + /*$time = adodb_mktime(); - + $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', '$FromName', '$To ($to_addr)', '$subject', $time, '')"; - $conn->Execute($sql); */ - + $conn->Execute($sql); */ + return TRUE; } return FALSE; @@ -266,59 +266,59 @@ global $objUsers, $objConfig, $objEmailQueue; $conn = &GetADODBConnection(); - + $this->recipient = $objUsers->GetUser($this->Get("FromUserId")); $this->recipient->TagPrefix="touser"; - + if($this->recipient->Get("PortalUserId")==$this->Get("FromUserId") || strlen($this->recipient->Get("PortalUserId")) == 0) - { + { $to_addr = $this->recipient->Get("Email"); $To = trim($this->recipient->Get("FirstName")." ".$this->recipient->Get("LastName")); $this->ReadTemplate(); - + if (strlen($to_addr) == 0) { $to_addr = $objConfig->Get("Smtp_AdminMailFrom"); } - - $subject = $this->ParseSection($this->subject); - $body = $this->ParseSection($this->body); + + $subject = $this->ParseSection($this->subject); + $body = $this->ParseSection($this->body); $FromName = strip_tags( $objConfig->Get('Site_Name') ); - $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); + $FromAddr = $objConfig->Get("Smtp_AdminMailFrom"); if(strlen($FromAddr)) - { + { $charset = "ascii-us"; if($this->Get("MessageType")=="html") { $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,"",$body,$charset,$this->Get("Event"),NULL,$this->headers); } else { - $body=nl2br($body); + $body=nl2br($body); $body = str_replace("
","\n",$body); $objEmailQueue->SendMail($FromAddr,$FromName,$to_addr,$To,$subject,$body,"",$charset, $this->Get("Event"),NULL,$this->headers); } - + /* $time = adodb_mktime(); - + $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', '$FromName', '$To ($to_addr)', '$subject', $time, '')"; - $conn->Execute($sql); + $conn->Execute($sql); */ return TRUE; } } return FALSE; } - + function ParseTemplateText($text) { $html = $text; $search = "TagPrefix; //$next_tag = strpos($html,"",$next_tag); $end_tag = strpos($html,"/>",$next_tag); if($end_tag < $closer || $closer == 0) @@ -333,33 +333,33 @@ { $OldTagStyle = ""; - + ## Try to find end of TagName $TagNameEnd = strpos($html, " ", $next_tag); - + ## Support Old version -// $closer = strpos(strtolower($html),"",$next_tag); +// $closer = strpos(strtolower($html),"",$next_tag); if ($TagNameEnd) - { + { $Tag = strtolower(substr($html, $next_tag, $TagNameEnd-$next_tag)); - $TagName = explode(":", $Tag); + $TagName = explode(":", $Tag); if (strlen($TagName[1])) $CloserTag = ""; - } + } else { $CloserTag = $OldTagStyle; - } - + } + $closer = strpos(strtolower($html), $CloserTag, $next_tag); - + ## Try to find old tag closer if (!$closer && ($CloserTag != $OldTagStyle)) { $CloserTag = $OldTagStyle; - $closer = strpos(strtolower($html), $CloserTag, $next_tag); + $closer = strpos(strtolower($html), $CloserTag, $next_tag); } - + $end_tag = strpos($html,">",$next_tag); $tagtext = substr($html,$next_tag,($end_tag - $next_tag)+1); $pre = substr($html,0,$next_tag); @@ -380,31 +380,31 @@ $next_tag = strpos($html,$search); } return $html; - } - + } + function ParseElement($raw, $inner_html ="") - { + { $tag = new clsHtmlTag($raw); $tag->inner_html = $inner_html; if($tag->parsed) - { + { if($tag->name=="include" || $tag->name=="perm_include" || $tag->name=="lang_include") { $output = $this->Parser->IncludeTemplate($tag); } else - { - if (is_object($this->Item)) { + { + if (is_object($this->Item)) { $this->Item->TagPrefix = $tag->name; - $output = $this->Item->ParseObject($tag); + $output = $this->Item->ParseObject($tag); } else { - $output = $this->ParseObject($tag); + $output = $this->ParseObject($tag); } if(substr($output,0,9)=="Undefined") - { + { $output = $tag->Execute(); // if(substr($output,0,8)="{Unknown") // $output = $raw; @@ -416,15 +416,15 @@ } } -class clsEmailMessageList extends clsItemCollection +class clsEmailMessageList extends clsItemCollection { function clsEmailMessageList() { $this->clsItemCollection(); $this->classname = "clsEmailMessage"; $this->SourceTable = GetTablePrefix()."EmailMessage"; $this->PerPageVar = "Perpage_EmailEvents"; - $this->AdminSearchFields = array("Template","Description", "Module","Event"); + $this->AdminSearchFields = array("Template","Description", "Module","Event"); } function LoadLanguage($LangId=NULL) @@ -438,7 +438,7 @@ $this->Clear(); return $this->Query_Item($sql); } - + function &AddEmailEvent($Template, $Type, $LangId, $EventId) { $e = new clsEmailMessage(); @@ -449,15 +449,15 @@ $e->Create(); return $e; - } - + } + function DeleteLanguage($LangId) { $sql = "DELETE FROM ".$this->SourceTable." WHERE LanguageId=$LangId OR LanguageId = 0"; if( $GLOBALS['debuglevel'] ) echo $sql."
\n"; $this->adodbConnection->Execute($sql); - } + } function &GetMessage($EventId,$LangId,$LoadFromDB=TRUE) { @@ -471,7 +471,7 @@ if(is_object($i)) { if($i->Get("EventId")==$EventId && $i->Get("LanguageId")==$LangId) - { + { $found=TRUE; break; } @@ -481,7 +481,7 @@ if(!$found) { if($LoadFromDB) - { + { $n = NULL; $n = new $this->classname(); $n->tablename = $this->SourceTable; @@ -496,7 +496,7 @@ else $i = FALSE; } - return $i; + return $i; } function CreateEmptyEditTable($IdList, $use_parent = false) @@ -511,7 +511,7 @@ if($objSession->HasSystemPermission("DEBUG.LIST")) echo htmlentities($insert,ENT_NOQUOTES)."
\n"; $this->adodbConnection->Execute($insert); - $this->LoadLanguage(); + $this->LoadLanguage(); $idvalue = -1; for($i=0;$i<$this->NumItems();$i++) { @@ -520,20 +520,20 @@ if(is_array($IdList)) { foreach($IdList as $id) - { + { $e->UnsetIdField(); $e->Set("EmailMessageId",$idvalue--); - $e->Set("LanguageId",$id); -// $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$id)); - $e->Create(); + $e->Set("LanguageId",$id); +// $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$id)); + $e->Create(); } } else { $e->UnsetIdField(); $e->Set("EmailMessageId",$idvalue--); $e->Set("LanguageId",$IdList); -// $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$LangId)); +// $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$LangId)); $e->Create(); } } @@ -551,7 +551,7 @@ $idfield = "EmailMessageId"; $edit_table = $objSession->GetEditTable($this->SourceTable); - $sql = "SELECT * FROM $edit_table WHERE LanguageId <> 0"; + $sql = "SELECT * FROM $edit_table WHERE LanguageId <> 0"; $rs = $this->adodbConnection->Execute($sql); while($rs && !$rs->EOF) { @@ -563,7 +563,7 @@ { $old_id = $c->Get($idfield); $c->Dirty(); - $c->UnsetIdField(); + $c->UnsetIdField(); $c->Create(); } else @@ -584,7 +584,7 @@ $edit_table = $objSession->GetEditTable($this->SourceTable); @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); } - + function &GetEmailEventObject($EventName,$Type=0,$LangId=NULL) { global $objLanguages; @@ -596,7 +596,7 @@ $sql = "SELECT * FROM $EventTable INNER JOIN $EmailTable ON ($EventTable.EventId = $EmailTable.EventId) "; $sql .="WHERE Event='$EventName' AND LanguageId=$LangId AND Type=$Type"; $result = $this->adodbConnection->Execute($sql); - + if ($result === FALSE) { //$Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"","clsEvent","GetEmailEventObject"); @@ -610,16 +610,16 @@ } function ReadImportTable($TableName,$Overwrite=FALSE, $MaxInserts=100,$Offset=0) - { - $eml = new clsEmailMessageList(); + { + $eml = new clsEmailMessageList(); $this->Clear(); $Inserts = 0; - $sql = "SELECT * FROM $TableName LIMIT $Offset,$MaxInserts"; + $sql = "SELECT * FROM $TableName LIMIT $Offset,$MaxInserts"; $this->Query_Item($sql); if($this->NumItems()>0) { foreach($this->Items as $i) - { + { $e = $eml->GetMessage($i->Get("EventId"),$i->Get("LanguageId")); if(is_object($e)) { @@ -639,7 +639,7 @@ } $Offset = $Offset + $Inserts; return $Offset; - } + } } function EventEnabled($e) @@ -651,19 +651,19 @@ return ($objConfig->Get($var)=="1"); } -class clsEmailQueue +class clsEmailQueue { var $SourceTable; var $MessagesAtOnce; var $MessagesSent=0; var $LogLevel = 0; - + function clsEmailQueue($SourceTable=NULL,$MessagesAtOnce=NULL) { global $objConfig; if($SourceTable) - { + { $this->SourceTable=$SourceTable; } else @@ -675,7 +675,7 @@ $this->MessagesAtOnce = $MessagesAtOnce; $this->LogLevel = (int)$objConfig->Get("Smtp_LogLevel"); } - + function WriteToMailLog($text) { global $pathtoroot,$admin; @@ -689,12 +689,12 @@ if($fp) { fputs($fp,$text."\n"); - fclose($fp); + fclose($fp); } } - } + } } - + function AllowSockets() { $minver = explode(".", "4.3.0"); @@ -707,62 +707,62 @@ return false; else return true; - } + } function DeliverMail($To,$From,$Subject,$Msg,$headers, $ForceSend=0) { global $MessagesSent,$objConfig; - + if(($this->MessagesSent >$this->MessagesAtOnce) && !$ForceSend) { $this->EnqueueMail($To,$From,$Subject,$Msg,$headers); return TRUE; } else { - + $this->MessagesSent++; - + $time = adodb_mktime(); $conn = &GetADODBConnection(); - + /* $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', '".htmlspecialchars($From)."', '".htmlspecialchars($To)."', '$Subject', $time, '')"; $conn->Execute($sql);*/ /* ensure headers are using \r\n instead of \n */ - + $headers = "Date: ".adodb_date("r")."\n".$headers; $headers = "Return-Path: ".$objConfig->Get("Smtp_AdminMailFrom")."\n".$headers; $headers = str_replace("\n\n","\r\n\r\n",$headers); $headers = str_replace("\r\n","\n",$headers); //$headers = str_replace("\n","\r\n",$headers); - + // if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { $Msg = str_replace("\n\n","\r\n\r\n",$Msg); $Msg = str_replace("\r\n","\n",$Msg); //$Msg = str_replace("\n","\r\n",$Msg); // } - + //echo "
"; print_r(htmlentities($headers)); echo "
"; //echo "
"; print_r(htmlentities($Msg)); echo "
"; $ver = phpversion(); if(substr($Subject,0,9)=="Subject: ") - $Subject = substr($Subject,9); + $Subject = substr($Subject,9); if(!strlen($objConfig->Get("Smtp_Server")) || !$this->AllowSockets()) { return mail($To,trim($Subject),$Msg, $headers); } - - $headers = "Subject: ".trim($Subject)."\r\n".$headers; - + + $headers = "Subject: ".trim($Subject)."\n".$headers; + $send_params['recipients'] = array($To); // The recipients (can be multiple) $send_params['from'] = $From; // This is used as in the MAIL FROM: cmd - $send_params['headers'] = explode("\r\n",$headers); + $send_params['headers'] = explode("\n",$headers); // It should end up as the Return-Path: header $send_params['body'] = $Msg; // The body of the email $params['host'] = $objConfig->Get("Smtp_Server"); // The smtp server host/ip - + $params['port'] = 25; // The smtp server port $params['hello'] = 'INPORTAL'; // What to use when sending the helo command. Typically, your domain/hostname if($objConfig->Get("Smtp_Authenticate")) // Whether to use basic authentication or not @@ -772,8 +772,8 @@ $params['pass'] = $objConfig->get("Smtp_Pass"); } else - $params['auth'] = FALSE; - $this->LogLevel=0; + $params['auth'] = FALSE; + $this->LogLevel=0; $SmtpServer = new smtp($params); if($this->LogLevel>0) { @@ -788,17 +788,17 @@ //$SmtpServer->debug = 1; } $connected = $SmtpServer->connect(); - + if($connected) { if($this->LogLevel>1) { - $this->WriteToMailLog("Connected to ".$params['host']); + $this->WriteToMailLog("Connected to ".$params['host']); } $res = $SmtpServer->send($send_params); } $SmtpServer->disconnect(); - + if($this->LogLevel>1) { foreach($SmtpServer->buffer as $l) @@ -816,7 +816,7 @@ $this->WriteToMailLog($e); } } - else + else $this->WriteToMailLog("Message to $From Delivered Successfully"); } unset($SmtpServer); @@ -831,7 +831,7 @@ $ado = &GetADODBConnection(); $To = mysql_escape_string($To); $From = mysql_escape_string($From); - $Msg = mysql_escape_string($Msg); + $Msg = mysql_escape_string($Msg); $headers = mysql_escape_string($headers); $Subject = mysql_escape_string($Subject); $sql = "INSERT INTO ".$this->SourceTable." (toaddr,fromaddr,subject,message,headers) VALUES ('$To','$From','$Subject','$Msg','$headers')"; @@ -844,7 +844,7 @@ $ado = &GetADODBConnection(); $MaxAllowed = $this->MessagesAtOnce; - + $del_sql = array(); $NumToSend = $MaxAllowed - $this->MessagesSent; @@ -855,8 +855,8 @@ while($rs && !$rs->EOF) { $data = $rs->fields; - $this->DeliverMail($data["toaddr"],$data["fromaddr"],$data["Subject"],$data["headers"],$data["message"],1); - + $this->DeliverMail($data["toaddr"],$data["fromaddr"],$data["Subject"],$data["headers"],$data["message"],1); + $del_sql[] = "DELETE FROM ".$this->SourceTable." WHERE queued='".$data["queued"]."'"; $rs->MoveNext(); } @@ -871,112 +871,113 @@ echo htmlentities($sql,ENT_NOQUOTES)."
\n"; } } - - function SendMail($From, $FromName, $ToAddr, $ToName, $Subject, $Text, $Html, $charset, $SendEvent, - $FileName="",$FileLoc="",$QueueOnly=0,$extra_headers = array()) - { - $HasFile = FALSE; - $HasFile = (strlen($FileName)>0); - $OB="----=_OuterBoundary_000"; - $boundary = "-----=".md5( uniqid (rand())); - $f = "\"$FromName\" <".$From.">"; - $headers = "From: $f\r\n"; - $headers .= "MIME-Version: 1.0\r\n"; - - $conn = &GetADODBConnection(); - $time = adodb_mktime(); - - $sendTo = $ToName; - - if (strlen($sendTo) > 0) { - $sendTo .= "($ToAddr)"; - } - else { - $sendTo = $ToAddr; - } - $sendTo=addslashes($sendTo); - $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', ".$conn->qstr($FromName).", ".$conn->qstr($sendTo).", ".$conn->qstr( str_replace("Subject:", "", $Subject) ).", $time, '$SendEvent')"; - $conn->Execute($sql); - - if($HasFile) - { - //Messages start with text/html alternatives in OB - $headers.="Content-Type: multipart/mixed;\r\n\tboundary=\"".$OB."\"\r\n\r\n"; - $msg.="--".$OB."\n"; - $msg.="Content-Type: multipart/alternative; boundary=\"$boundary\"\r\n\r\n"; - } - else - $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\""; - if(is_array($extra_headers)) - { - for($i=0;$i0); + $OB="----=_OuterBoundary_000"; + $boundary = "-----=".md5( uniqid (rand())); + $f = "\"$FromName\" <".$From.">"; + $headers = "From: $f\r\n"; + $headers .= "MIME-Version: 1.0\r\n"; + + $conn = &GetADODBConnection(); + $time = adodb_mktime(); + + $sendTo = $ToName; + + if (strlen($sendTo) > 0) { + $sendTo .= "($ToAddr)"; + } + else { + $sendTo = $ToAddr; + } + $sendTo=addslashes($sendTo); + $sql = "INSERT INTO ".GetTablePrefix()."EmailLog VALUES ('', ".$conn->qstr($FromName).", ".$conn->qstr($sendTo).", ".$conn->qstr( str_replace("Subject:", "", $Subject) ).", $time, '$SendEvent')"; + $conn->Execute($sql); + + if($HasFile) + { + //Messages start with text/html alternatives in OB + $headers.="Content-Type: multipart/mixed;\r\n\tboundary=\"".$OB."\"\r\n\r\n"; + $msg.="--".$OB."\n"; + $msg.="Content-Type: multipart/alternative; boundary=\"$boundary\"\r\n\r\n"; + } + else + $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\""; + if(is_array($extra_headers)) + { + for($i=0;$i0) - { - $msg .= "--" . $boundary . "\n"; - $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; - $msg .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; - $msg .= stripslashes($Html); - $msg .= "\r\n\r\n"; - } - $msg .= "--" . $boundary . "--\n\r"; - if($HasFile) - { - if(!strlen($FileLoc)) - $FileLoc = $FileName; - $FileName = basename($FileName); - $msg .= "\n--".$OB."\n"; - $msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\r\n"; - $msg.="Content-Transfer-Encoding: base64\n"; - $msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\r\n\r\n"; - //file goes here - $fd=fopen ($FileLoc, "r"); - if($fd) - { - $FileContent=fread($fd,filesize($FileLoc)); - fclose ($fd); - } - $FileContent=chunk_split(base64_encode($FileContent)); - $msg.=$FileContent; - $msg .= $OB."--\r\n"; - } + $msg .= "--" . $boundary . "\n"; + $msg .= "Content-Type: text/plain; charset=\"$charset\"\r\n"; + $msg .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; + $msg .= stripslashes($Text); + $msg .= "\r\n\r\n"; - if(strlen($ToName)>0) - { - $To = "\"$ToName\" <$ToAddr>"; - } - else { - $To = "<".$ToAddr.">"; - } - - //$headers.="To: $To\r\n"; - if($this->MessagesSent>$this->MessagesAtOnce || $QueueOnly==1) - { - $this->EnqueueMail($ToAddr,$From,$Subject,$msg,$headers); - } - else - { - $this->DeliverMail($ToAddr,$From,$Subject,$msg,$headers); - } - } + if(strlen($Html)>0) + { + $msg .= "--" . $boundary . "\n"; + $msg .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; + $msg .= "Content-Transfer-Encoding: 8bit\r\n\r\n"; + $msg .= stripslashes($Html); + $msg .= "\r\n\r\n"; + } + $msg .= "--" . $boundary . "--\n\r"; + if($HasFile) + { + if(!strlen($FileLoc)) { + $FileLoc = $FileName; + } + $FileName = basename($FileName); + $msg .= "\n--".$OB."\n"; + $msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\r\n"; + $msg.="Content-Transfer-Encoding: base64\n"; + $msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\r\n\r\n"; + //file goes here + $fd=fopen ($FileLoc, "r"); + if($fd) + { + $FileContent=fread($fd,filesize($FileLoc)); + fclose ($fd); + } + $FileContent=chunk_split(base64_encode($FileContent)); + $msg .= $FileContent; + $msg .= $OB."--\r\n"; + } + + if(strlen($ToName)>0) + { + $To = "\"$ToName\" <$ToAddr>"; + } + else { + $To = "<".$ToAddr.">"; + } + + //$headers.="To: $To\r\n"; + if($this->MessagesSent>$this->MessagesAtOnce || $QueueOnly==1) + { + $this->EnqueueMail($ToAddr,$From,$Subject,$msg,$headers); + } + else + { + $this->DeliverMail($ToAddr,$From,$Subject,$msg,$headers); + } + } + } ?>