LoadTemplate("EMAIL_STANDARD_TEMPLATE"); $HASH_EMAIL_STANDARD_TEMPLATE["TEXT_HTML_BODY"] = $msg; $HASH_EMAIL_STANDARD_TEMPLATE["TEXT_SUBJECT"] = $subj; $HASH_EMAIL_STANDARD_TEMPLATE["TEXT_TIMESTAMP"] = date("d M Y, H:i"); //Now we can prepare it. With evaluate option coz... $HTML_EMAIL = $T_EMAIL_STANDARD_TEMPLATE->PrepareTemplate($HASH_EMAIL_STANDARD_TEMPLATE, $Evaluatecode = 0, $UsePrecompiled = 1); unset($T_EMAIL_STANDARD_TEMPLATE); unset($HASH_EMAIL_STANDARD_TEMPLATE); $m2 = preg_replace("/\n\.\.\n/", "\n...\n", $m2); $m2 = preg_replace("/\n\.\n/", "\n..\n", $m2); $HTML_EMAIL = preg_replace("/\n\.\.\n/", "\n...\n", $HTML_EMAIL); $HTML_EMAIL = preg_replace("/\n\.\n/", "\n..\n", $HTML_EMAIL); $fp = @fsockopen(MAIL_SERVER_NAME, 25, $errno, $errstr, 60); if (!$fp) { return("SENDMAIL: $errstr ($errno)\n"); } $Log .= "<" . fgets($fp, 1024); fputs($fp, "HELO " . MAIL_SERVER_NAME . "\n"); fflush($fp); $Log .= ">HELO " . MAIL_SERVER_NAME . "\n"; $Log .= "<" . fgets($fp, 1024); fputs($fp, "MAIL FROM: <" . $FromAddr . ">\n"); fflush($fp); $Log .= ">MAIL FROM: <" . $FromAddr . ">\n"; $Log .= "<" . fgets($fp, 1024); fputs($fp, "RCPT TO: <" . $to . ">\n"); fflush($fp); $Log .= ">RCPT TO: <" . $to . ">\n"; $Log .= "<" . fgets($fp, 1024); fputs($fp, "DATA\n"); fflush($fp); $Log .= ">DATA\n"; $Log .= "<" . fgets($fp, 1024); // echo $Log; die(); fputs($fp, "Date: " . date("r") . "\n" . "From: =?koi8-r?b?" . base64_encode(convert_cyr_string($FromName, "w", "k")) . "?= <$FromAddr>\n" . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113\n" . "X-Accept-Language: ru, en-us, en\n" . "MIME-Version: 1.0\n" . "To: " . $to . "\n" . "Subject: =?koi8-r?b?" . base64_encode(convert_cyr_string($subj, "w", "k")) . "?=\n" . // subject "Return-Path: $FromAddr\n" . "Reply-To: $FromAddr\n" . $ExtraInfo . convert_cyr_string("\n--$Delimeter\n" . "Content-Type: text/plain; charset=\"koi8-r\"\n" . "Content-Disposition: inline\n" . "Content-Transfer-Encoding: 8bit\n" . // "X-Mailer: PHP/" . phpversion() . "\n". "\n" . $m2 . /* "\n--$Delimeter\n" . "Content-Type: text/html; charset=\"koi8-r\"\n". "Content-Disposition: inline\n" . "Content-Transfer-Encoding: 8bit\n" . // "X-Mailer: PHP/" . phpversion() . "\n\n" . $HTML_EMAIL . */ "\n--$Delimeter--\n", "w", "k") . // body "\n" . ".\n" // final DATA dot ;) ); fflush($fp); $Result = fgets($fp, 1024); $Log .= $Result; // echo $Log; die(); if (substr($Result, 0, 3) != "250") { return("Error send on " . $to . "\nLog:\n" . $Log); } fputs($fp, "QUIT\n"); fflush($fp); fclose($fp); } } // mailreply function CEAlerter($subj, $msg) { global $DB, $DBID; global $SERVER_NAME; $SQL = "SELECT login, prime_email FROM AIV_MEMBER WHERE " . "status='ENABLED' AND UserClass='Administrator' AND notify_me='Y' AND prime_email<>'' " . "ORDER BY registry_date ASC"; $result = GetArray($DB, $SQL); // echo "$result : $SQL :"; if (is_array($result)) { foreach ($result as $key => $val) { $CEto = $val["prime_email"]; $CEname = $val["login"]; mailreply($CEto, "$SERVER_NAME ALERT: " . $subj, "Dear $CEname! Here is a secret carbon copy message.
\n" . $msg); } } } // CEAlerter function SubscriberAlerter($subj, $msg) { global $DB, $DBID; global $SERVER_NAME; $SQL = "select distinct NS_EMAIL from NEWS_SUBSCRIBE where NS_ACTIVE='Y'"; $Data = GetArray($DB, $SQL); if (is_array($Data)) { foreach ($Data as $Subscriber) { $CEto = $Subscriber["NS_EMAIL"]; mailreply($CEto, $subj, $msg); } } } // SubscriberAlerter function AnnounceAlerter($CategoryID, $SubjectTEXT, $msgTEMPLATE, $msgHASH) { global $DB; $CategoryID = intval($CategoryID); $SQL = "SELECT USER_ID,login,first_name,middle_name,last_name,PropVal,prime_email FROM DYNACONT_USER_SUBSCRIPTION LEFT JOIN AIV_MEMBER ON DYNACONT_USER_SUBSCRIPTION.USER_ID=AIV_MEMBER.id LEFT JOIN DYNACONT_USER_PROPERTIES ON DYNACONT_USER_SUBSCRIPTION.USER_ID=DYNACONT_USER_PROPERTIES.UserID AND DYNACONT_USER_PROPERTIES.PropID='SendNotification' WHERE CATEGORY_ID=$CategoryID AND prime_email!='' AND (PropVal='Y' OR ISNULL(PropVal))"; $Data = GetArray($DB, $SQL); if (is_array($Data)) { foreach ($Data as $Subscriber) { $UsrEMail = $Subscriber['prime_email']; $msgHASH["Subscriber_ID"] = $Subscriber['USER_ID']; $msgHASH['Subscriber_Login'] = $Subscriber['login']; $msgHASH['Subscriber_Name'] = $Subscriber['first_name'] . $Subscriber['middle_name'] . $Subscriber['last_name']; $msg = $msgTEMPLATE->PrepareTemplate($msgHASH, $Evaluatecode = 0, $UsePrecompiled = 1); mailreply($UsrEMail, $SubjectTEXT, $msg); } } } // SubscriberAlerter function ValidateEmail($email) { global $EMAIL_SERVER_NAME; $return = array(false, ""); list ( $user, $domain ) = split("@", $email, 2); $tld = $domain; $email = trim($email); if ($email != "" && ereg_replace("[a-zA-Z0-9\._\-]{1,50}@(([a-zA-Z0-9_\-]{1,50})(\.)){1,5}[a-zA-Z]{2,4}", "", $email) == "") { // probably good e-mail... } else { $return[1] = "BAD email"; return $return; } if (checkdnsrr($tld, "MX")) { if (getmxrr($tld, $mxhosts, $weight)) { if (count($mxhosts) == 0) { $return[1] = "no MX hosts"; } else { $return[0] = true; } } // if ( getmxrr... else { $return[1] = "bad getmxrr"; } } // if ( checkdnsrr... else { $return[1] = "bad checkdnsrr"; } return $return; } // ValidateEmail function PrepareMailList($MsgTo, $Interactive = 0) { $MsgTo = ereg_replace("[\n\r]", " ", $MsgTo); $MsgTo = ereg_replace(" ", " ", $MsgTo); $MsgTo = ereg_replace(",", " ", $MsgTo); $MsgToList = split(" ", $MsgTo); $goods = 0; set_time_limit(0); for ($i = 0; $i < sizeof($MsgToList); $i++) { if ($MsgToList[$i] != "") { // echo "
Ex: " . $MsgToList[$i] ; $tst = ValidateEmail($MsgToList[$i]); if ($tst[0]) { if ($Interactive) { echo "+ " . $MsgToList[$i] . "
\n"; flush(); } // echo " OK \n" ; $PobablyGoodEmails[$goods++] = $MsgToList[$i]; } else { if ($Interactive) { echo "- " . $MsgToList[$i] . "
\n"; flush(); } // echo " BAD " . $tst[1] . "! "; } flush(); } } if (is_array($PobablyGoodEmails)) { return $PobablyGoodEmails; } else { return false; } } // PrepareMailList ?>