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
?>