function &connect($params = array()) { if (!isset($this->status)) { $obj = new smtp($params); if ($obj->connect()) $obj->status = SMTP_STATUS_CONNECTED; return $obj; } else { $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); if (function_exists('socket_set_timeout')) @socket_set_timeout($this->connection, 5, 0); $greeting = $this->get_data(); if (is_resource($this->connection)) return $this->auth ? $this->ehlo() : $this->helo(); else { $this->errors[] = 'Failed to connect to server: ' . $errstr; return false; } } }
function connect($params = array()) { if (!isset($this->status)) { $obj = new smtp($params); if ($obj->connect()) { $obj->status = SMTP_STATUS_CONNECTED; } return $obj; } else { if (!empty($GLOBALS['_CFG']['smtp_ssl'])) { $this->host = "ssl://" . $this->host; } $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); if ($this->connection === false) { $this->errors[] = 'Access is denied.'; return false; } @socket_set_timeout($this->connection, 0, 250000); $greeting = $this->get_data(); if (is_resource($this->connection)) { $this->status = 2; return $this->auth ? $this->ehlo() : $this->helo(); } else { log_write($errstr, __FILE__, __LINE__); $this->errors[] = 'Failed to connect to server: ' . $errstr; return false; } } }
function SEND_MAIL() { $main = new maincf_multi($_POST["hostname"]); $ipaddr = $main->ip_addr; include_once dirname(__FILE__) . "/ressources/smtp/smtp.php"; $Parms["host"] = $ipaddr; $Parms["DonotResolvMX"] = true; $smtp = new smtp($Parms); $smtp->bindto = $_POST["TESTS-BIND"]; $smtp->from = $_POST["TESTS-FROM"]; $smtp->recipients = $_POST["TESTS-TO"]; $f[] = "Return-Path: <{$_POST["TESTS-FROM"]}>"; $f[] = "Subject: {$_POST["TESTS-SUB"]}"; $f[] = "From: {$_POST["TESTS-FROM"]}"; $f[] = "Sender: {$_POST["TESTS-FROM"]}"; $f[] = "Reply-To: {$_POST["TESTS-FROM"]}"; $f[] = "X-Sender: {$_POST["TESTS-FROM"]}"; $f[] = "Envelope-To: {$_POST["TESTS-TO"]}"; $smtp->headers = @implode("\n", $f); $smtp->body = $_POST["TESTS-BOD"]; if (!$smtp->connect()) { echo "Instance {$_POST["hostname"]}\nIP: {$ipaddr}:25\n"; echo @implode("\n", $smtp->errors); return; } if (!$smtp->send()) { echo @implode("\n", $smtp->errors); return; } echo @implode("\n", $smtp->errors); }
function mailIt($htmltosend, $emailto = '', $emailfrom = '', $emailsubj = '', $attachment = '') { global $system; include_once 'class.smtp.inc'; include_once 'class.html.mime.mail.inc'; include_once 'mimePart.php'; define('CRLF', "\r\n", TRUE); $mail = new html_mime_mail(array('X-Mailer: Html Mime Mail Class')); if ($attachment != '') { $mail->add_attachment($attachment, 'ordine.csv', 'application/csv'); //metti un nome e un mime type a piacimento, secondo quel che vuoi } $mail->add_html($htmltosend, $emailsubj); if (!$mail->build_message()) { exit('Failed to build email'); } $params = array('host' => '65.125.231.122', 'port' => 25, 'helo' => 'localhost', 'auth' => FALSE, 'user' => '', 'pass' => ''); $smtp =& smtp::connect($params); $send_params = array('from' => $emailfrom, 'recipients' => array($emailto), 'headers' => array('From: ' . $system->SETTINGS['sitename'] . ' <' . $emailfrom . '>', 'To: ' . $emailto . '', 'Subject: ' . $emailsubj)); $mail->smtp_send($smtp, $send_params); }
function SendTest($Key) { $GLOBALS["WRITETOFILE"] = dirname(__FILE__) . "/ressources/logs/{$Key}.log"; $sock = new sockets(); $unix = new unix(); $datas = unserialize(base64_decode($sock->GET_INFO($Key))); $listen_addr = null; $recipient = $datas["smtp_dest"]; $sender = $datas["smtp_sender"]; smtp::events("Resolving From {$sender} to: {$recipient}", __FUNCTION__, __FILE__, __LINE__); if (preg_match("#(.+?)@(.+)#", $recipient, $re)) { $domainname = $re[2]; } if (!is_numeric($datas["smtp_auth"])) { $datas["smtp_auth"] = 0; } $TargetHostname = null; $servername = $datas["servername"]; $BinDTO = "127.0.0.1"; if ($servername != "master") { $instance = $servername; $main = new maincf_multi($servername); $listen_addr = $main->ip_addr; $BinDTO = $listen_addr; } else { $instance = $unix->hostname_g(); } $smtp = new smtp(); $NOresolvMX = false; if ($datas["smtp_auth"] == 1) { $TargetHostname = $datas["relay"]; } if ($datas["smtp_local"] == 1) { $TargetHostname = inet_interfaces(); if (preg_match("#all#is", $TargetHostname)) { $TargetHostname = "127.0.0.1"; } smtp::events("Local, instance {$servername}: Sock to `{$TargetHostname}`", __FUNCTION__, __FILE__, __LINE__); if ($servername != "master") { smtp::events("Local, instance {$servername}: changed to inet_interfaces()::{$TargetHostname}", __FUNCTION__, __FILE__, __LINE__); $TargetHostname = $listen_addr; } } if ($TargetHostname == null) { $TargetHostname = $smtp->ResolveMXDomain($domainname); smtp::events("Resolving {$domainname} = `{$TargetHostname}` bind address: {$BinDTO}", __FUNCTION__, __FILE__, __LINE__); } $params["helo"] = $instance; $params["bindto"] = $BinDTO; $params["debug"] = true; smtp::events("smtp_auth: {$datas["smtp_auth"]}, user:{$params["user"]},relay:{$datas["relay"]} ", __FUNCTION__, __FILE__, __LINE__); smtp::events("Me: HELO: {$instance}", __FUNCTION__, __FILE__, __LINE__); if ($datas["smtp_auth"] == 1) { $params["auth"] = true; $params["user"] = $datas["smtp_auth_user"]; $params["pass"] = $datas["smtp_auth_passwd"]; if (trim($datas["relay"]) == null) { if ($TargetHostname != null) { $datas["relay"] = $TargetHostname; } } $TargetHostname = $datas["relay"]; } $params["host"] = $TargetHostname; if (!$smtp->connect($params)) { smtp::events("Error {$smtp->error_number}: Could not connect to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); return; } $boundary = md5(uniqid(microtime(), TRUE)); $body[] = "Return-Path: <{$sender}>"; $body[] = "X-Original-To: {$recipient}"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$sender} (Mail Delivery System)"; $body[] = "Subject: Test Message"; $body[] = "To: {$recipient}"; $body[] = ""; $body[] = ""; $body[] = "This is the mail system at host {$instance}."; $body[] = ""; $body[] = "I'm glade to inform you that your message is"; $body[] = " delivered to you..."; $body[] = ""; $body[] = "For further assistance, please send mail to postmaster."; $body[] = ""; $body[] = "If you do so, please include this problem report. You can"; $body[] = "delete your own text from the attached returned message."; $body[] = ""; $body[] = " The mail system"; $body[] = ""; $body[] = ""; $body[] = ""; $finalbody = @implode("\r\n", $body); if (!$smtp->send(array("from" => $sender, "recipients" => $recipient, "body" => $finalbody, "headers" => null))) { smtp::events("Error {$smtp->error_number}: Could not send to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); return; } smtp::events("Success sending message trough [{$TargetHostname}:25]", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); smtp::events("Test message Success From=<{$sender}> to=<{$recipient}> ", __FUNCTION__, __FILE__, __LINE__); chmod($GLOBALS["WRITETOFILE"], 0775); }
function testmail() { $sock = new sockets(); $HotSpotAutoRegisterWebMail = intval($sock->GET_INFO("HotSpotAutoRegisterWebMail")); $HotSpotAutoRegisterSMTPSrv = $sock->GET_INFO("HotSpotAutoRegisterSMTPSrv"); $HotSpotAutoRegisterSMTPSrvPort = $sock->GET_INFO("HotSpotAutoRegisterSMTPSrvPort"); $HotSpotAutoRegisterSMTPSender = $sock->GET_INFO("HotSpotAutoRegisterSMTPSender"); $HotSpotAutoRegisterSMTPUser = $sock->GET_INFO("HotSpotAutoRegisterSMTPUser"); $HotSpotAutoRegisterSMTPPass = $sock->GET_INFO("HotSpotAutoRegisterSMTPPass"); $HotSpotAutoRegisterSMTPTls = intval($sock->GET_INFO("HotSpotAutoRegisterSMTPTls")); $HotSpotAutoRegisterSMTPSSL = intval($sock->GET_INFO("HotSpotAutoRegisterSMTPSSL")); $instance = trim($sock->getFrameWork('cmd.php?full-hostname=yes')); if ($HotSpotAutoRegisterSMTPSrvPort == 0) { $HotSpotAutoRegisterSMTPSrvPort = 25; } $smtp = new smtp(); if ($HotSpotAutoRegisterSMTPUser != null) { $params["auth"] = true; $params["user"] = $HotSpotAutoRegisterSMTPUser; $params["pass"] = $HotSpotAutoRegisterSMTPPass; } $params["host"] = $HotSpotAutoRegisterSMTPSrv; $params["port"] = $HotSpotAutoRegisterSMTPSrvPort; if (!$smtp->connect($params)) { echo "Error {$smtp->error_number}: Could not connect to `{$HotSpotAutoRegisterSMTPSrv}` {$smtp->error_text}\n"; return; } echo "Connecting OK\n"; $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$instance}"; $body[] = "Return-Path: <{$HotSpotAutoRegisterSMTPSender}>"; $body[] = "X-Original-To: {$recipient}"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$HotSpotAutoRegisterSMTPSender} (Mail Delivery System)"; $body[] = "Subject: {$Subject}"; $body[] = "To: {$recipient}"; $body[] = ""; $body[] = ""; $body[] = "This is the mail system at host {$instance}."; $body[] = ""; $body[] = "I'm glade to inform you that your message is"; $body[] = " delivered to you..."; $body[] = ""; $body[] = "For further assistance, please send mail to postmaster."; $body[] = ""; $body[] = "If you do so, please include this problem report. You can"; $body[] = "delete your own text from the attached returned message."; $body[] = ""; $body[] = " The mail system"; $body[] = ""; $body[] = ""; $finalbody = @implode("\r\n", $body); if (!$smtp->send(array("from" => $HotSpotAutoRegisterSMTPSender, "recipients" => $recipient, "body" => $finalbody, "headers" => null))) { echo "Error {$smtp->error_number}: Could not send to `{$HotSpotAutoRegisterSMTPSrv}` {$smtp->error_text}\n"; $smtp->quit(); return; } $smtp->quit(); return; }
function wifidog_register_perform() { session_start(); $page = CurrentPageName(); $autocreate_confirmed = 0; if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("Starting wifidog_register_perform()"); } $sock = new sockets(); $ArticaHotSpotSMTP = SMTP_SETTINGS(); $email = trim(strtolower($_POST["email"])); $q = new mysql_squid_builder(); $password2 = trim($_POST["password2"]); $password = trim($_POST["password"]); if ($password2 != $password) { return wifidog_register("{password_mismatch}"); } if ($ArticaHotSpotSMTP["ENABLED_SMTP"] == 1) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return wifidog_register("{error_email_invalid}"); } $tr = explode("@", $email); $domain = $tr[1]; if (!checkdnsrr($domain, 'MX')) { return wifidog_register("«{$domain}»<br>{error_domain_email_invalid}"); } } $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT uid FROM hotspot_members WHERE `uid`='{$email}'")); $wifidog_build_uri = wifidog_build_uri(); $uriext = $wifidog_build_uri[0]; $HiddenFields = $wifidog_build_uri[1]; if ($ligne["uid"] != null) { if ($ArticaHotSpotSMTP["ENABLED_SMTP"] == 1) { $link = "<center><a href=\"{$page}?wifidog-recover=yes&{$uriext}\">{lost_password}</a></center>"; } return wifidog_register("{this_account_already_exists}<hr>{$link}"); } $MAC = $_REQUEST["mac"]; $REGISTER_MAX_TIME = $ArticaHotSpotSMTP["REGISTER_MAX_TIME"]; $ArticaSplashHotSpotEndTime = $ArticaHotSpotSMTP["ArticaSplashHotSpotEndTime"]; $password = md5($password); $creationtime = time(); $autocreate_maxttl = $ArticaHotSpotSMTP["REGISTER_MAX_TIME"]; $sessionkey = md5($password . $creationtime . $email); $gateway_addr = $_REQUEST["gw_address"]; $gw_port = $_REQUEST["gw_port"]; $gw_id = $_REQUEST["gw_id"]; $ARP = $_REQUEST["mac"]; $url = $_REQUEST["url"]; $token = $_REQUEST["token"]; if ($ArticaHotSpotSMTP["ENABLED_SMTP"] == 0) { $autocreate_confirmed = 1; } if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("Create new member {$email},{$password},TTL:{$ArticaSplashHotSpotEndTime} in line:" . __LINE__); } $sql = "INSERT IGNORE INTO hotspot_members \n\t(uid,ttl,sessiontime,password,enabled,creationtime,autocreate,autocreate_confirmed,autocreate_maxttl,sessionkey,MAC) VALUES\n\t('{$email}','{$ArticaSplashHotSpotEndTime}','','{$password}',1,'{$creationtime}',1,'{$autocreate_confirmed}',{$autocreate_maxttl},'{$sessionkey}','{$MAC}')"; $q->QUERY_SQL($sql); if (!$q->ok) { if (strpos(" {$q->mysql_error}", "Unknown column") > 0) { if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("check_hotspot_tables in line:" . __LINE__); } $q->check_hotspot_tables(); if (!$q->ok) { if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("{$q->mysql_error} in line:" . __LINE__); } } $q->QUERY_SQL($sql); } } if (!$q->ok) { ToSyslog("{$q->mysql_error}"); return wifidog_register($q->mysql_error); } if ($ArticaHotSpotSMTP["ENABLED_SMTP"] == 0) { $array["SERVER_NAME"] = $_SERVER["SERVER_NAME"]; $array["redirecturi"] = $url; $array["LOGIN"] = $email; $array["redirecturi"] = $_REQUEST["url"]; $array["REMOTE_ADDR"] = $_REQUEST["ip"]; $array["token"] = $token; $array["HOST"] = $_REQUEST["ip"]; UnLock($array); ToSyslog("wifidog_auth/" . __FUNCTION__ . ":: SESSION(HOTSPOT_REDIRECT_URL) = {$url}"); $_SESSION["HOTSPOT_AUTO_REGISTER"] = true; $_SESSION["HOTSPOT_REDIRECT_URL"] = $url; $redirecturi = "http://{$gateway_addr}:{$gw_port}/wifidog/auth?token={$token}"; ToSyslog("wifidog_auth/" . __FUNCTION__ . ":: Redirect Token: {$token} to {$redirecturi}"); header("Location: {$redirecturi}"); return; } $proto = "http"; $myHostname = $_SERVER["HTTP_HOST"]; $page = CurrentPageName(); if (isset($_SERVER["HTTPS"])) { $proto = "https"; } $URL_REDIRECT = "{$proto}://{$myHostname}/{$page}?wifidog-confirm={$sessionkey}"; $smtp_sender = $ArticaHotSpotSMTP["smtp_sender"]; if ($ArticaHotSpotSMTP["REGISTER_MESSAGE"] == null) { $ArticaHotSpotSMTP["REGISTER_MESSAGE"] = "Hi, in order to activate your account on the HotSpot system,\nclick on the link below"; } if ($ArticaHotSpotSMTP["RECOVER_MESSAGE"] == null) { $ArticaHotSpotSMTP["RECOVER_MESSAGE"] = "Hi, in order to recover your password on the HotSpot system,\nclick on the link below"; } if ($ArticaHotSpotSMTP["CONFIRM_MESSAGE"] == null) { $ArticaHotSpotSMTP["CONFIRM_MESSAGE"] = "Success\nA message as been sent to you.\nPlease check your WebMail system in order to confirm your registration"; } if ($ArticaHotSpotSMTP["REGISTER_SUBJECT"] == null) { $ArticaHotSpotSMTP["REGISTER_SUBJECT"] = "HotSpot account validation"; } $smtp_senderTR = explode("@", $smtp_sender); $instance = $smtp_senderTR[1]; $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$instance}"; $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$ArticaHotSpotSMTP["REGISTER_SUBJECT"]}"; $body[] = "To: {$email}"; $body[] = "Auto-Submitted: auto-replied"; $body[] = "MIME-Version: 1.0"; $body[] = "Content-Type: multipart/mixed;"; $body[] = "\tboundary=\"{$boundary}\""; $body[] = "Content-Transfer-Encoding: 8bit"; $body[] = "Message-Id: <{$random_hash}@{$instance}>"; $body[] = "--{$boundary}"; $body[] = "Content-Description: Notification"; $body[] = "Content-Type: text/plain; charset=us-ascii"; $body[] = ""; $body[] = $ArticaHotSpotSMTP["REGISTER_MESSAGE"]; $body[] = $URL_REDIRECT; $body[] = ""; $body[] = ""; $body[] = "--{$boundary}"; $finalbody = @implode("\r\n", $body); $smtp = new smtp(); if ($ArticaHotSpotSMTP["smtp_auth_user"] != null) { $params["auth"] = true; $params["user"] = $ArticaHotSpotSMTP["smtp_auth_user"]; $params["pass"] = $ArticaHotSpotSMTP["smtp_auth_passwd"]; } $params["host"] = $ArticaHotSpotSMTP["smtp_server_name"]; $params["port"] = $ArticaHotSpotSMTP["smtp_server_port"]; if (!$smtp->connect($params)) { return wifidog_register("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $email, "body" => $finalbody, "headers" => null))) { $smtp->quit(); return wifidog_register("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("From: {$smtp_sender} to {$email} {$ArticaHotSpotSMTP["REGISTER_SUBJECT"]} success"); } $smtp->quit(); if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("wifidog_auth/" . __FUNCTION__ . ":: Token: {$token} -> UnLock(.."); } $array["LOGIN"] = $email; $array["ARP"] = $_REQUEST["mac"]; $array["token"] = $token; $array["redirecturi"] = $_REQUEST["url"]; $array["REMOTE_ADDR"] = $_REQUEST["ip"]; $array["REGISTER"] = true; if (!UnLock($array)) { if ($GLOBALS["HOTSPOT_DEBUG"]) { ToSyslog("wifidog_auth/" . __FUNCTION__ . "::failed_to_create_session"); } return wifidog_register("{error} {failed_to_create_session}"); } ToSyslog("wifidog_auth/" . __FUNCTION__ . ":: SESSION(HOTSPOT_REDIRECT_URL) = {$url}"); $_SESSION["HOTSPOT_AUTO_REGISTER"] = true; $_SESSION["HOTSPOT_REDIRECT_URL"] = $url; $redirecturi = "http://{$gateway_addr}:{$gw_port}/wifidog/auth?token={$token}"; ToSyslog("wifidog_auth/" . __FUNCTION__ . ":: Redirect Token: {$token} to {$redirecturi}"); header("Location: {$redirecturi}"); }
function wifidog_register_perform() { session_start(); $page = CurrentPageName(); $tpl = new templates(); $autocreate_confirmed = 0; if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Starting wifidog_register_perform()"); } $wifidog_build_uri = wifidog_build_uri(); $uriext = $wifidog_build_uri[0]; $HiddenFields = $wifidog_build_uri[1]; $sock = new wifidog_settings($_SESSION["WIFIDOG_RULES"]); $ENABLED_SMTP = intval($sock->GET_INFO("ENABLED_SMTP")); $wifidog_templates = new wifidog_templates($_SESSION["WIFIDOG_RULES"]); $ENABLED_REDIRECT_LOGIN = intval($sock->GET_INFO("ENABLED_REDIRECT_LOGIN")); $email = trim(strtolower($_POST["email"])); $q = new mysql_hotspot(); $password2 = trim($_POST["password2"]); $password = trim($_POST["password"]); $passphrase = trim(strtolower($_POST["passphrase"])); if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("{$email}: Ask a passphrase: {$wifidog_templates->REGISTER_GENERIC_PASSWORD}"); } if ($wifidog_templates->REGISTER_GENERIC_PASSWORD == 1) { if ($passphrase != trim(strtolower($wifidog_templates->REGISTER_GENERIC_PASSTXT))) { return wifidog_register($wifidog_templates->char($wifidog_templates->REGISTER_GENERIC_PASSERR)); } } if ($password2 != $password) { return wifidog_register("{password_mismatch}"); } if ($ENABLED_SMTP == 1) { if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return wifidog_register("{error_email_invalid}"); } $tr = explode("@", $email); $domain = $tr[1]; if (!checkdnsrr($domain, 'MX')) { return wifidog_register("«{$domain}»<br>{error_domain_email_invalid}"); } } $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT uid,autocreate FROM hotspot_members WHERE `uid`='{$email}'")); if ($ENABLED_REDIRECT_LOGIN == 1) { if (intval($ligne["autocreate"]) == 1) { if ($ligne["uid"] != null) { $q->QUERY_SQL("DELETE FROM hotspot_members WHERE `uid`='{$email}'"); $ligne["uid"] = null; } } } if ($ligne["uid"] != null) { if ($ENABLED_SMTP == 1) { $link = "<br><strong><a href=\"{$page}?wifidog-recover=yes&{$uriext}\">{lost_password}</a></strong>"; } return wifidog_register($tpl->_ENGINE_parse_body("{this_account_already_exists}<br>{$link}")); } wifidog_logs("Ruleid: {$_SESSION["WIFIDOG_RULES"]}"); $MAC = $_REQUEST["mac"]; $REGISTER_MAX_TIME = intval($sock->GET_INFO("REGISTER_MAX_TIME")); $ArticaSplashHotSpotEndTime = intval($sock->GET_INFO("ArticaSplashHotSpotEndTime")); if ($REGISTER_MAX_TIME == 0) { $REGISTER_MAX_TIME = 5; } wifidog_logs("Ruleid: REGISTER_MAX_TIME:{$REGISTER_MAX_TIME}"); wifidog_logs("Ruleid: ArticaSplashHotSpotEndTime:{$ArticaSplashHotSpotEndTime}"); $password = md5($password); $creationtime = time(); $autocreate_maxttl = $ArticaSplashHotSpotEndTime; $sessionkey = md5($password . $creationtime . $email); $gateway_addr = $_REQUEST["gw_address"]; $gw_port = $_REQUEST["gw_port"]; $gw_id = $_REQUEST["gw_id"]; $ARP = $_REQUEST["mac"]; $url = $_REQUEST["url"]; $token = $_REQUEST["token"]; if ($token == null) { if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("no token retrive", __FUNCTION__, __LINE__); } $token = generateToken($ARP); if ($token == null) { $token = md5(uniqid(rand(), 1)); if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Generate a temporary token {$token}", __FUNCTION__, __LINE__); } } } if ($ENABLED_SMTP == 0) { $autocreate_confirmed = 1; } if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("Create new member {$email},{$password},TTL:{$ArticaSplashHotSpotEndTime}", __FUNCTION__, __LINE__); } $sql = "INSERT IGNORE INTO hotspot_members \n\t(uid,username,token,ruleid,ttl,sessiontime,password,enabled,creationtime,autocreate,autocreate_confirmed,autocreate_maxttl,sessionkey,MAC) VALUES\n\t('{$email}','{$email}','{$token}','{$_SESSION["WIFIDOG_RULES"]}','{$ArticaSplashHotSpotEndTime}','','{$password}',1,'{$creationtime}',1,'{$autocreate_confirmed}',{$autocreate_maxttl},'{$sessionkey}','{$MAC}')"; $q->QUERY_SQL($sql); wifidog_logs("[{$ARP}]:[{$GLOBALS["CONNECTED_IP"]}]: {$email}: Create New member with a token {$token}", __FUNCTION__, __LINE__); if (!$q->ok) { events(0, "MySQL error: {$q->mysql_error} (Line: " . __LINE__ . ")"); wifidog_logs("{$q->mysql_error}"); wifidog_logs("{$sql}"); return wifidog_register($q->mysql_error); } if ($ENABLED_SMTP == 0) { $array["SERVER_NAME"] = $_SERVER["SERVER_NAME"]; $array["redirecturi"] = $url; $array["LOGIN"] = $email; $array["redirecturi"] = $_REQUEST["url"]; $array["REMOTE_ADDR"] = $_REQUEST["ip"]; $array["token"] = $token; $array["HOST"] = $_REQUEST["ip"]; $array["ruleid"] = $_SESSION["WIFIDOG_RULES"]; UnLock($array); wifidog_logs("wifidog_auth/" . __FUNCTION__ . ":: SESSION(HOTSPOT_REDIRECT_URL) = {$url}"); $_SESSION["HOTSPOT_AUTO_REGISTER"] = true; $_SESSION["HOTSPOT_REDIRECT_URL"] = $url; $redirecturi = "http://{$gateway_addr}:{$gw_port}/wifidog/auth?token={$token}"; wifidog_logs("wifidog_auth/" . __FUNCTION__ . ":: Redirect Token: {$token} to {$redirecturi}"); header("Location: {$redirecturi}"); return; } $proto = "http"; $myHostname = $_SERVER["HTTP_HOST"]; $page = CurrentPageName(); if (isset($_SERVER["HTTPS"])) { $proto = "https"; } $URL_REDIRECT = "{$proto}://{$myHostname}/{$page}?wifidog-confirm={$sessionkey}"; $smtp_sender = $sock->GET_INFO("smtp_sender"); include_once dirname(__FILE__) . "/ressources/externals/mime/mime.inc"; $message = new Mail_mime("\r\n"); $text = "<p style=font-size:18px>{$wifidog_templates->REGISTER_MESSAGE}</p>\n\t<p>\t\n\t<hr>\n\t\t<center>\n\t\t\t<a href=\"{$URL_REDIRECT}\" style='font-size:22px;text-decoration:underline'>{$URL_REDIRECT}</a>\n\t\t</center>\n\t</p>"; $message->setFrom($smtp_sender); $message->addTo($email); $message->setSubject($wifidog_templates->REGISTER_SUBJECT); $message->setTXTBody(strip_tags($text)); $message->setHTMLBody($text); $finalbody = $message->getMessage(); $webauth_msmtp = new webauth_msmtp($smtp_sender, $finalbody, $email); if (!$webauth_msmtp->Send()) { events(0, "SMTP Error[method 1]: {$webauth_msmtp->logs}", $webauth_msmtp->logs); $content[] = "Method 1:\n{$webauth_msmtp->logs}\n"; $smtp = new smtp(); if ($sock->GET_INFO("smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("smtp_auth_user"); $params["pass"] = $sock->GET_INFO("smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("smtp_server_name"); $params["port"] = $sock->GET_INFO("smtp_server_port"); if (!$smtp->connect($params)) { $content[] = "Method2 Error:{$smtp->error_number} {$smtp->error_text}"; events(0, "SMTP Error[method 2 - Connect]: {$params["host"]} {$smtp->error_number} {$smtp->error_text}", @implode("\n", $content)); return wifidog_register("{$email}: {error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $email, "body" => $finalbody, "headers" => null))) { events(0, "SMTP Error[method 2 - Send]: {$smtp->error_number} {$smtp->error_text}", null); $smtp->quit(); return wifidog_register("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}"); } if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("From: {$smtp_sender} to {$email} {$wifidog_templates->REGISTER_SUBJECT} success"); } $smtp->quit(); } if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("wifidog_auth/" . __FUNCTION__ . ":: Token: {$token} -> UnLock(.."); } $array["LOGIN"] = $email; $array["ARP"] = $_REQUEST["mac"]; $array["token"] = $token; $array["redirecturi"] = $_REQUEST["url"]; $array["REMOTE_ADDR"] = $_REQUEST["ip"]; $array["REGISTER"] = true; if (!UnLock($array)) { if ($GLOBALS["HOTSPOT_DEBUG"]) { wifidog_logs("wifidog_auth/" . __FUNCTION__ . "::failed_to_create_session"); } return wifidog_register("{error} {failed_to_create_session}"); } wifidog_logs("wifidog_auth/" . __FUNCTION__ . ":: SESSION(HOTSPOT_REDIRECT_URL) = {$url}"); $_SESSION["HOTSPOT_AUTO_REGISTER"] = true; $_SESSION["HOTSPOT_REDIRECT_URL"] = $url; $redirecturi = "http://{$gateway_addr}:{$gw_port}/wifidog/auth?token={$token}"; wifidog_logs("wifidog_auth/" . __FUNCTION__ . ":: Redirect Token: {$token} to {$redirecturi}"); header("Location: {$redirecturi}"); }
function sendtestmail($from, $to) { $unix = new unix(); $smtp = new smtp(); $tt = explode("@", $to); $domainname = $tt[1]; $TargetHostname = $smtp->ResolveMXDomain($tt[1]); echo "Connect: {$TargetHostname}\n "; $params["host"] = $TargetHostname; $params["helo"] = $unix->hostname_g(); if (!$smtp->connect($params)) { smtp::events("[{$domainname}] {$domainname} -> Could not connect to `{$TargetHostname}`", __FUNCTION__, __FILE__, __LINE__); return; } $body[] = "Return-Path: <{$from}>"; $body[] = "X-Original-To: {$to}"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$from} (Test sender)"; $body[] = "Subject: Test mail " . date("D, d M Y H:i:s"); $body[] = "To: {$to}"; $body[] = "Auto-Submitted: auto-replied"; $body[] = "MIME-Version: 1.0"; $body[] = ""; $body[] = "This is a tests mail"; $MAILDATA = @implode("\r\n", $body); if (!$smtp->send(array("from" => $from, "recipients" => $to, "body" => $MAILDATA))) { echo "Failed\n"; return; } $smtp->quit(); echo "Success from=<{$from}> to=<{$to}>\n"; }
function sendemail($email, $name, $vars, $page = 0) { global $useSMTP, $smtp_server, $smtp_helo, $smtp_uname, $smtp_pword, $mailer_id; global $email_from, $reply_to, $friendly_name, $thisUrl; //$emailSubj = sprintf("Can you become a Master in self-control %s?", $vars['firstname']); include_once AFGPATH . '/includes/class.html.mime.mail.inc'; define('CRLF', "\r\n", TRUE); $mail = new html_mime_mail(array("X-Mailer: {$mailer_id}")); if ($smtp_uname != "" || $smtp_pword != "") { $smtpauth = TRUE; } else { $smtpauth = FALSE; } if (CODEDEBUG) { //file_put_contents(AFGPATH.'/file.log', AFGPATH.'/'.$vars['email'].'.txt'.AFGPATH.'/'.$vars['email'].'.html', FILE_APPEND); } if (file_exists(AFGPATH . '/' . $vars['email'] . '.txt') && file_exists(AFGPATH . '/' . $vars['email'] . '.html')) { $email_body = fread($fp = fopen(AFGPATH . '/' . $vars['email'] . '.txt', 'r'), filesize(AFGPATH . '/' . $vars['email'] . '.txt')); fclose($fp); $html_email_body = fread($fp = fopen(AFGPATH . '/' . $vars['email'] . '.html', 'r'), filesize(AFGPATH . '/' . $vars['email'] . '.html')); fclose($fp); foreach ($vars as $key => $val) { if (strpos($email_body, '[' . trim($key) . ']')) { $email_body = preg_replace("/\\[{$key}\\]/", stripslashes($val), $email_body); } } $email_body = preg_replace('/\\[(\\S.*?)\\]/', '', $email_body); if ($html_email_body) { foreach ($vars as $key => $val) { if (strpos($html_email_body, '[' . trim($key) . ']')) { $html_email_body = preg_replace("/\\[{$key}\\]/", stripslashes($val), $html_email_body); } } $html_email_body = preg_replace('/\\[(\\S.*?)\\]/', '', $html_email_body); $mail->add_html($html_email_body, $email_body, AFGPATH . '/emails/'); //$mail->add_html($html_email_body, $email_body, 'img'); } else { $mail->add_text($email_body); } $mail->build_message(); $subject = ''; if ($vars['email'] == 'emails/email-thankyou') { $subject = 'Thank you'; } if ($vars['email'] == 'emails/email-thankyou2') { $subject = 'Thank you'; } if ($vars['email'] == 'emails/email-flag') { $subject = 'Flagged image'; } $headers = array("From: \"{$friendly_name}\" <{$email_from}>", "To: \"{$name}\" <{$email}>", "Subject: " . $subject, "Reply-To: {$reply_to}"); if ($useSMTP) { include_once AFGPATH . '/includes/class.smtp.inc'; $params = array('host' => $smtp_server, 'port' => 25, 'helo' => $smtp_helo, 'auth' => $smtpauth, 'user' => $smtp_uname, 'pass' => $smtp_pword); //echo '<PRE>'.htmlentities($mail->get_rfc822($name, $email, $friendly_name, $email_from, $email_subj, $headers)).'</PRE>'; $smtp =& smtp::connect($params); $send_params = array('from' => $email_from, 'recipients' => $email, 'headers' => $headers); $mail->smtp_send($smtp, $send_params); } else { $mail->send($name, $email, $friendly_name, $email_from, $emailSubj, $headers); } /* if (CODEDEBUG){ $content = print_r(htmlentities($mail->get_rfc822($name, $email, $friendly_name, $email_from, $email_subj, $headers)), true); file_put_contents(AFGPATH.'/file.log', $content, FILE_APPEND); } */ } }
function tests_smtp() { //ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null); include_once dirname(__FILE__) . "/ressources/externals/mime/mime.inc"; header("content-type: application/x-javascript"); $sock = new sockets(); $sock = new wifidog_settings($_GET["ruleid"]); $wifidog_templates = new wifidog_templates($_GET["ruleid"]); $ArticaSplashHotSpotEndTime = $sock->GET_INFO("ArticaSplashHotSpotEndTime"); $proto = "http"; $myHostname = $_SERVER["HTTP_HOST"]; $page = CurrentPageName(); if (isset($_SERVER["HTTPS"])) { $proto = "https"; } $URL_REDIRECT = "{$proto}://{$myHostname}/{$page}?wifidog-confirm=NONE"; $tpl = new templates(); $smtp_sender = $sock->GET_INFO("smtp_sender"); if ($GLOBALS["VERBOSE"]) { echo "new Mail_mime....<br>\n"; } include_once dirname(__FILE__) . "/ressources/externals/mime/mime.inc"; $message = new Mail_mime("\r\n"); $text = "<p style=font-size:18px>{$wifidog_templates->REGISTER_MESSAGE}</p><p>\n\t<hr><center><a href=\"{$URL_REDIRECT}\" style='font-size:22px;text-decoration:underline'>{$URL_REDIRECT}</a></center></p>"; $message->setFrom($smtp_sender); $message->addTo($smtp_sender); $message->setSubject($wifidog_templates->REGISTER_SUBJECT); $message->setTXTBody(strip_tags($text)); // for plain-text $message->setHTMLBody($text); $finalbody = $message->getMessage(); if ($GLOBALS["VERBOSE"]) { echo $finalbody . "<hr>\n"; } $webauth_msmtp = new webauth_msmtp($smtp_sender, $finalbody, $smtp_sender, $_GET["ruleid"]); if ($webauth_msmtp->Send()) { echo "alert('Rule: {$_GET["ruleid"]} {$smtp_sender} " . $tpl->javascript_parse_text("{$wifidog_templates->REGISTER_SUBJECT}\nTo {$smtp_sender}: {success}") . "');"; return; } else { echo "alert('Rule: {$_GET["ruleid"]} {$smtp_sender} Method 1 " . $tpl->javascript_parse_text($webauth_msmtp->logs) . "');"; } $smtp = new smtp(); if ($sock->GET_INFO("smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("smtp_auth_user"); $params["pass"] = $sock->GET_INFO("smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("smtp_server_name"); $params["port"] = $sock->GET_INFO("smtp_server_port"); if (!$smtp->connect($params)) { echo "alert('" . $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}") . "');"; return; } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $smtp_sender, "body" => $finalbody, "headers" => null))) { $smtp->quit(); echo "alert('" . $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}") . "');"; return; } echo "alert('" . $tpl->javascript_parse_text("{$wifidog_templates->REGISTER_SUBJECT}\nTo {$smtp_sender}: {success}") . "');"; $smtp->quit(); }
function ufdb_smtp() { $unix = new unix(); $q = new mysql_squid_builder(); if (!$q->TABLE_EXISTS("ufdb_smtp")) { return; } if ($q->COUNT_ROWS("ufdb_smtp") == 0) { return; } $q->QUERY_SQL("DELETE FROM ufdb_smtp WHERE `retrytime`>4"); $sql = "SELECT * FROM ufdb_smtp"; $results = $q->QUERY_SQL($sql); if (!$q->ok) { return; } $sock = new sockets(); $SquidGuardWebSMTP = unserialize(base64_decode($sock->GET_INFO("SquidGuardWebSMTP"))); //`zDate`,`Subject`,`content`,`sender`,`URL`,`REASONGIVEN`,`retrytime`) VALUES while ($ligne = mysql_fetch_assoc($results)) { $zmd5 = $ligne["zmd5"]; $Subject = $ligne["Subject"]; $smtp_sender = $ligne["sender"]; $recipient = $SquidGuardWebSMTP["smtp_recipient"]; $smtp_senderTR = explode("@", $recipient); $instance = $smtp_senderTR[1]; $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$Subject}"; $body[] = "To: {$recipient}"; $body[] = ""; $body[] = ""; $body[] = "Request time: {$ligne["zDate"]}"; $body[] = "URL.........: {$ligne["URL"]}"; $body[] = "Reason......: {$ligne["REASONGIVEN"]}"; $body[] = "SMTP retry..: {$ligne["retrytime"]}"; $body[] = $ligne["content"]; $body[] = ""; $body[] = ""; $finalbody = @implode("\r\n", $body); if ($SquidGuardWebSMTP["smtp_auth_user"] != null) { $params["auth"] = true; $params["user"] = $SquidGuardWebSMTP["smtp_auth_user"]; $params["pass"] = $SquidGuardWebSMTP["smtp_auth_passwd"]; } $params["host"] = $SquidGuardWebSMTP["smtp_server_name"]; $params["port"] = $SquidGuardWebSMTP["smtp_server_port"]; $retrytime = $ligne["retrytime"] + 1; $smtp = new smtp(); if (!$smtp->connect($params)) { writelogs("parseTemplate_sendemail_perform:{$smtp_sender} -> {error} {$smtp->error_numbe}", __FUNCTION__, __FILE__, __LINE__); $q->QUERY_SQL("UPDATE ufdb_smtp SET `retrytime`='{$retrytime}' WHERE `zmd5`='{$zmd5}'"); continue; } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $recipient, "body" => $finalbody, "headers" => null))) { $smtp->quit(); writelogs("parseTemplate_sendemail_perform:{$smtp_sender} -> {error} {$smtp->error_numbe}", __FUNCTION__, __FILE__, __LINE__); $q->QUERY_SQL("UPDATE ufdb_smtp SET `retrytime`='{$retrytime}' WHERE `zmd5`='{$zmd5}'"); continue; } $smtp->quit(); $q->QUERY_SQL("DELETE FROM ufdb_smtp WHERE `zmd5`='{$zmd5}'"); } if ($q->COUNT_ROWS("ufdb_smtp") == 0) { $q->QUERY_SQL("DROP TABLE ufdb_smtp"); } }
function tests_smtp(){ echo "<textarea style='width:100%;height:275px;font-size:14px !important;border:4px solid #CCCCCC; font-family:\"Courier New\", Courier,monospace;color:black' id='subtitle'>"; include_once(dirname(__FILE__).'/ressources/smtp/smtp.php'); ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null); $tpl=new templates(); $sock=new sockets(); $SquidGuardWebSMTP=unserialize(base64_decode($sock->GET_INFO("SquidGuardWebSMTP"))); $GLOBALS["VERBOSE"]=true; $smtp_sender=$_GET["smtp_sendto"]; $recipient=$SquidGuardWebSMTP["smtp_recipient"]; $smtp_senderTR=explode("@",$_GET["smtp_sendto"]); $instance=$smtp_senderTR[1]; $random_hash = md5(date('r', time())); $body[]="Return-Path: <$smtp_sender>"; $body[]="Date: ". date("D, d M Y H:i:s"). " +0100 (CET)"; $body[]="From: $smtp_sender"; $body[]="To: $recipient"; $body[]="Subject: Test notification from Web interface"; $body[]=""; $body[]=""; $body[]="Here, the message from the robot..."; $body[]=""; $body[]=""; $finalbody=@implode("\r\n", $body); $smtp=new smtp(); $smtp->debug=true; if($SquidGuardWebSMTP["smtp_auth_user"]<>null){ $params["auth"]=true; $params["user"]=$SquidGuardWebSMTP["smtp_auth_user"]; $params["pass"]=$SquidGuardWebSMTP["smtp_auth_passwd"]; } $params["host"]=$SquidGuardWebSMTP["smtp_server_name"]; $params["port"]=$SquidGuardWebSMTP["smtp_server_port"]; if(!$smtp->connect($params)){ echo "</textarea><script>"; echo "alert('".$tpl->javascript_parse_text("{error_while_sending_message} {error} $smtp->error_number $smtp->error_text")."');</script>"; return; } if(!$smtp->send(array("from"=>$smtp_sender,"recipients"=>$recipient,"body"=>$finalbody,"headers"=>null))){ $smtp->quit(); echo "</textarea><script>"; echo "alert('".$tpl->javascript_parse_text("{error_while_sending_message} {error}\\n $smtp->error_number $smtp->error_text")."');</script>"; return; } echo "</textarea><script>"; echo "alert('".$tpl->javascript_parse_text("Test Message\nTo $recipient: {success}")."');</script>"; $smtp->quit(); }
/** * Óʼþ·¢ËÍ. * * @param: $name[string] ½ÓÊÕÈËÐÕÃû * @param: $email[string] ½ÓÊÕÈËÓʼþµØÖ· * @param: $subject[string] Óʼþ±êÌâ * @param: $content[string] ÓʼþÄÚÈÝ * @param: $type[int] 0 ÆÕͨÓʼþ£¬ 1 HTMLÓʼþ * @param: $notification[bool] true ÒªÇó»ØÖ´£¬ false ²»ÓûØÖ´ * * @return bool */ function send_mail($name, $email, $subject, $content, $type = 0, $notification = false) { /* Èç¹ûÓʼþ±àÂë²»ÊÇEC_CHARSET£¬´´½¨×Ö·û¼¯×ª»»¶ÔÏó£¬×ª»»±àÂë */ if ($GLOBALS['_CFG']['mail_charset'] != EC_CHARSET) { $name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $name); $subject = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $subject); $content = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $content); $shop_name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $GLOBALS['_CFG']['shop_name']); } $charset = $GLOBALS['_CFG']['mail_charset']; /* * ʹÓÃmailº¯Êý·¢ËÍÓʼþ */ if ($GLOBALS['_CFG']['mail_service'] == 0 && function_exists('mail')) { /* ÓʼþµÄÍ·²¿ÐÅÏ¢ */ $content_type = $type == 0 ? 'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset; $headers = array(); $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?=' . '" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; $headers[] = $content_type . '; format=flowed'; if ($notification) { $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?=' . '" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; } $res = @mail($email, '=?' . $charset . '?B?' . base64_encode($subject) . '?=', $content, implode("\r\n", $headers)); if (!$res) { $GLOBALS['err']->add($GLOBALS['_LANG']['sendemail_false']); return false; } else { return true; } } else { /* ÓʼþµÄÍ·²¿ÐÅÏ¢ */ $content_type = $type == 0 ? 'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset; $content = base64_encode($content); $headers = array(); $headers[] = 'Date: ' . gmdate('D, j M Y H:i:s') . ' +0000'; $headers[] = 'To: "' . '=?' . $charset . '?B?' . base64_encode($name) . '?=' . '" <' . $email . '>'; $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?=' . '" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; $headers[] = 'Subject: ' . '=?' . $charset . '?B?' . base64_encode($subject) . '?='; $headers[] = $content_type . '; format=flowed'; $headers[] = 'Content-Transfer-Encoding: base64'; $headers[] = 'Content-Disposition: inline'; if ($notification) { $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?=' . '" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; } /* »ñµÃÓʼþ·þÎñÆ÷µÄ²ÎÊýÉèÖà */ $params['host'] = $GLOBALS['_CFG']['smtp_host']; $params['port'] = $GLOBALS['_CFG']['smtp_port']; $params['user'] = $GLOBALS['_CFG']['smtp_user']; $params['pass'] = $GLOBALS['_CFG']['smtp_pass']; if (empty($params['host']) || empty($params['port'])) { // Èç¹ûûÓÐÉèÖÃÖ÷»úºÍ¶Ë¿ÚÖ±½Ó·µ»Ø false $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_setting_error']); return false; } else { // ·¢ËÍÓʼþ if (!function_exists('fsockopen')) { //Èç¹ûfsockopen±»½ûÓã¬Ö±½Ó·µ»Ø $GLOBALS['err']->add($GLOBALS['_LANG']['disabled_fsockopen']); return false; } include_once ROOT_PATH . 'includes/cls_smtp.php'; static $smtp; $send_params['recipients'] = $email; $send_params['headers'] = $headers; $send_params['from'] = $GLOBALS['_CFG']['smtp_mail']; $send_params['body'] = $content; if (!isset($smtp)) { $smtp = new smtp($params); } if ($smtp->connect() && $smtp->send($send_params)) { return true; } else { $err_msg = $smtp->error_msg(); if (empty($err_msg)) { $GLOBALS['err']->add('Unknown Error'); } else { if (strpos($err_msg, 'Failed to connect to server') !== false) { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['smtp_connect_failure'], $params['host'] . ':' . $params['port'])); } elseif (strpos($err_msg, 'AUTH command failed') !== false) { $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_login_failure']); } elseif (strpos($err_msg, 'bad sequence of commands') !== false) { $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_refuse']); } else { $GLOBALS['err']->add($err_msg); } } return false; } } } }
if ($prefs['zend_mail_handler'] == 'smtp') { $params = array(); $params["host"] = $prefs['zend_mail_smtp_server']; $params["port"] = $prefs['zend_mail_smtp_port']; $params["helo"] = $prefs['zend_mail_smtp_helo']; $params["user"] = $prefs['zend_mail_smtp_user']; $params["pass"] = $prefs['zend_mail_smtp_pass']; $params["security"] = $prefs['zend_mail_smtp_security']; if ($prefs['zend_mail_smtp_auth'] == 'login') { $params["auth"] = true; } else { $params["auth"] = false; } echo "Connecting to the mail server..."; $mailer = new smtp($params); if (!$mailer->connect()) { echo "Failed."; print_r($smtp->errors); echo "\n"; die; } else { echo "Connected!\n"; } $query = "SELECT messageId, message FROM `tiki_mail_queue`"; $messages = $tikilib->fetchAll($query); foreach ($messages as $message) { echo "Sending message " . $message["messageId"] . "..."; if (!$mailer->send(json_decode($message["message"]))) { $query = "UPDATE `tiki_mail_queue` SET attempts = attempts + 1 WHERE messageId = ?"; echo "Failed.\n"; print_r($mailer->errors);
function connect($params = array()) { if (count($params) > 0) { foreach ($params as $key => $value) { $this->{$key} = $value; } } if (!isset($this->status)) { $obj = new smtp($params); if ($obj->connect()) { $obj->status = SMTP_STATUS_CONNECTED; } return $obj; } else { $errorplus = null; if (!$this->connect_stream()) { $this->connection = @fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); if (!$this->connection) { $this->errors[] = "Failed to fsockopen to [{$this->host}]:({$this->port}) Err.{$errno} {$errstr}"; $this->events("Failed to fsockopen to [{$this->host}]:({$this->port}) Err.{$errno} {$errstr}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); return false; } //$this->events("Success to fsockopen to $this->host", __CLASS__.'/'.__FUNCTION__, __FILE__, __LINE__); if (function_exists('socket_set_timeout')) { @socket_set_timeout($this->connection, 5, 0); } } if (!$this->connection) { $this->errors[] = "Failed to connect {$errorplus}to {$this->host}:{$this->port} Err.{$errno} {$errstr}"; $this->events("Failed to connect {$errorplus}to {$this->host}:{$this->port} Err.{$errno} {$errstr}", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); } if ($this->connection) { $this->status = SMTP_STATUS_CONNECTED; } $greeting = $this->get_data(); if ($this->debug) { $this->events("DEBUG:: greeting: `{$greeting}`", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); } $this->PARSE_ERROR($greeting); if ($this->DETECTED_ERROR($greeting)) { $this->errors[] = "ERROR DETECTED IN GREETING...\"" . trim($greeting); if ($this->debug) { $this->events("ERROR DETECTED IN GREETING...\"" . trim($greeting) . "\"", __CLASS__ . '/' . __FUNCTION__, __FILE__, __LINE__); } return false; } if (is_resource($this->connection)) { if ($this->auth) { return $this->ehlo(); } //$this->events("Send HELO command...", __CLASS__.'/'.__FUNCTION__, __FILE__, __LINE__); return $this->helo(); } else { $this->errors[] = "Failed to connect to {$this->host}:{$this->port} Err.{$errno}: " . $errstr; return FALSE; } } }
function sendEmail($subject, $content = null) { $unix = new unix(); $hostname = "ks220503.kimsufi.com"; $mailfrom = "root@{$hostname}"; $recipient = "*****@*****.**"; $TargetHostname = "37.187.142.164"; $params["helo"] = $hostname; $params["host"] = $TargetHostname; $params["do_debug"] = true; $params["debug"] = true; $smtp = new smtp($params); if (!$smtp->connect($params)) { smtp::events("Error {$smtp->error_number}: Could not connect to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); return; } $random_hash = md5(date('r', time())); $content = str_replace("\r\n", "\n", $content); $content = str_replace("\n", "\r\n", $content); $body[] = "Return-Path: <{$mailfrom}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$mailfrom} (robot)"; $body[] = "Subject: {$subject}"; $body[] = "To: {$recipient}"; $body[] = ""; $body[] = ""; $body[] = $content; $body[] = ""; $finalbody = @implode("\r\n", $body); if (!$smtp->send(array("from" => "{$mailfrom}", "recipients" => $recipient, "body" => $finalbody, "headers" => null))) { smtp::events("Error {$smtp->error_number}: Could not send to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); return; } smtp::events("Success sending message trough [{$TargetHostname}:25]", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); }
function tests_smtp(){ ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null); header("content-type: application/x-javascript"); $sock=new sockets(); $ArticaHotSpotSMTP=unserialize(base64_decode($sock->GET_INFO("ArticaHotSpotSMTP"))); $ArticaSplashHotSpotEndTime=$sock->GET_INFO("ArticaSplashHotSpotEndTime"); $proto="http"; $myHostname=$_SERVER["HTTP_HOST"]; $page=CurrentPageName(); if(isset($_SERVER["HTTPS"])){$proto="https";} $URL_REDIRECT="$proto://$myHostname/$page?wifidog-confirm=NONE"; $tpl=new templates(); $smtp_sender=$ArticaHotSpotSMTP["smtp_sender"]; if($ArticaHotSpotSMTP["REGISTER_MESSAGE"]==null){$ArticaHotSpotSMTP["REGISTER_MESSAGE"]="Hi, in order to activate your account on the HotSpot system,\nclick on the link below";} if($ArticaHotSpotSMTP["RECOVER_MESSAGE"]==null){$ArticaHotSpotSMTP["RECOVER_MESSAGE"]="Hi, in order to recover your password on the HotSpot system,\nclick on the link below";} if($ArticaHotSpotSMTP["CONFIRM_MESSAGE"]==null){$ArticaHotSpotSMTP["CONFIRM_MESSAGE"]="Success\nA message as been sent to you.\nPlease check your WebMail system in order to confirm your registration";} if($ArticaHotSpotSMTP["REGISTER_SUBJECT"]==null){$ArticaHotSpotSMTP["REGISTER_SUBJECT"]="HotSpot account validation";} $smtp_senderTR=explode("@",$smtp_sender); $instance=$smtp_senderTR[1]; $random_hash = md5(date('r', time())); $body[]="Return-Path: <$smtp_sender>"; $body[]="Date: ". date("D, d M Y H:i:s"). " +0100 (CET)"; $body[]="From: $smtp_sender"; $body[]="Subject: {$ArticaHotSpotSMTP["REGISTER_SUBJECT"]}"; $body[]="To: $smtp_sender"; $body[]=""; $body[]=""; $body[]=$ArticaHotSpotSMTP["REGISTER_MESSAGE"]; $body[]=$URL_REDIRECT; $body[]=""; $body[]=""; $finalbody=@implode("\r\n", $body); $smtp=new smtp(); if($ArticaHotSpotSMTP["smtp_auth_user"]<>null){ $params["auth"]=true; $params["user"]=$ArticaHotSpotSMTP["smtp_auth_user"]; $params["pass"]=$ArticaHotSpotSMTP["smtp_auth_passwd"]; } $params["host"]=$ArticaHotSpotSMTP["smtp_server_name"]; $params["port"]=$ArticaHotSpotSMTP["smtp_server_port"]; if(!$smtp->connect($params)){ echo "alert('".$tpl->javascript_parse_text("{error_while_sending_message} {error} $smtp->error_number $smtp->error_text")."');"; return; } if(!$smtp->send(array("from"=>$smtp_sender,"recipients"=>$smtp_sender,"body"=>$finalbody,"headers"=>null))){ $smtp->quit(); echo "alert('".$tpl->javascript_parse_text("{error_while_sending_message} {error} $smtp->error_number $smtp->error_text")."');"; return; } echo "alert('".$tpl->javascript_parse_text("{$ArticaHotSpotSMTP["REGISTER_SUBJECT"]}\nTo $smtp_sender: {success}")."');"; $smtp->quit(); }
function archive_process_smtpsrv($file, $realmailfrom, $realmailto) { $MailArchiverToSMTP = $GLOBALS["MailArchiverToSMTP"]; $MailArchiverSMTP = $GLOBALS["MailArchiverSMTP"]; $MailArchiverSMTPINcoming = $GLOBALS["MailArchiverSMTPINcoming"]; $MailArchiverSMTP_port = 25; $SMTPSERV = true; $realmailto = trim(strtolower($realmailto)); if ($MailArchiverSMTP == null) { $SMTPSERV = false; } if ($MailArchiverSMTP == "localhost") { $SMTPSERV = false; } if ($MailArchiverSMTP == "127.0.0.1") { $SMTPSERV = false; } if (!$SMTPSERV) { events("Not from=<{$realmailfrom}> to=<{$realmailto}> bad remote SMTP server `{$MailArchiverSMTP}`", __LINE__); return true; } if (preg_match("#^(.+?)@(.+)#", $realmailto, $re)) { $DomainTo = trim($re[1]); } if (!isset($GLOBALS["INBOUND_SMTP"])) { $f = explode("\n", @file_get_contents("/etc/postfix/mydestination")); while (list($num, $line) = each($f)) { if (preg_match("#^(.+?)\\s+#", $line, $re)) { $GLOBALS["INBOUND_SMTP"][trim(strtolower($re[1]))] = true; } } $f = explode("\n", @file_get_contents("/etc/postfix/relay_domains")); while (list($num, $line) = each($f)) { if (preg_match("#^(.+?)\\s+#", $line, $re)) { $GLOBALS["INBOUND_SMTP"][trim(strtolower($re[1]))] = true; } } $f = explode("\n", @file_get_contents("/etc/postfix/virtual")); while (list($num, $line) = each($f)) { if (preg_match("#^(.+?)\\s+#", $line, $re)) { $GLOBALS["INBOUND_SMTP"][trim(strtolower($re[1]))] = true; } } } $ISINBOUND = false; if (isset($GLOBALS["INBOUND_SMTP"][$realmailto])) { $ISINBOUND = true; } if (isset($GLOBALS["INBOUND_SMTP"][$DomainTo])) { $ISINBOUND = true; } if ($MailArchiverSMTPINcoming == 1) { if (!$ISINBOUND) { events("Not from=<{$realmailfrom}> to=<{$realmailto}> not an inbound message", __LINE__); return true; } } if (preg_match("#^(.+?):([0-9]+)#", $MailArchiverSMTP, $re)) { $MailArchiverSMTP = $re[1]; $MailArchiverSMTP_port = $re[2]; } $basename = basename($file); $smtp = new smtp(); $params["host"] = $MailArchiverSMTP; $params["helo"] = $GLOBALS["MYHOSTNAME"]; $params["port"] = $MailArchiverSMTP_port; //$params["bindto"]="127.0.0.1"; if (!$smtp->connect($params)) { events("[{$basename}] {$realmailfrom} -> Could not connect to `{$MailArchiverSMTP}:{$MailArchiverSMTP_port}`", __LINE__); smtp::events("[{$basename}] {$realmailfrom} -> Could not connect to `{$MailArchiverSMTP}:{$MailArchiverSMTP_port}`", __FUNCTION__, __FILE__, __LINE__); return false; } $size = @filesize($file); if ($size == 0) { events("[{$basename}] Failed from=<{$realmailfrom}> to=<{$realmailto}> 0 bytes", __LINE__); return true; } $MAILDATA = @file_get_contents($file); $MAILDATA = str_replace("X-Archive-end", "X-REAL-ARCHIVED: yes", $MAILDATA); $MAILDATA = str_replace("X-REAL-MAILFROM", "X-REAL-ARCHIVED: yes\r\nX-REAL-MAILFROM", $MAILDATA); if (!$smtp->send(array("from" => $realmailfrom, "recipients" => $realmailto, "body" => $MAILDATA))) { events("[{$basename}] Failed from=<{$realmailfrom}> to=<{$realmailto}>", __LINE__); smtp::events("[{$basename}] Failed from=<{$realmailfrom}> to=<{$realmailto}>", __FUNCTION__, __FILE__, __LINE__); return false; } events("Success from=<{$realmailfrom}> to=<{$realmailto}> trough {$params["host"]}", __LINE__); if ($GLOBALS["VERBOSE"]) { echo "Success from=<{$realmailto}> to=<{$realmailto}> trough {$params["host"]}\n"; } return true; }
function mx_mbx() { $tpl = new templates(); $page = CurrentPageName(); $tb = explode("@", $_GET["recipient"]); $t = $_GET["t"]; $mx = unserialize(base64_decode($_GET["mx"])); $users = new usersMenus(); $newarray = array(); $smtp = new smtp(); while (list($ip, $ipaddr) = each($mx)) { $params = array(); $img = "ok24.png"; $error = null; $params["timeout"] = 2; $params["host"] = $ipaddr; $params["port"] = 25; $params["helo"] = $users->hostname; $params["DonotResolvMX"] = true; $error = "{success}"; if (!$smtp->connect($params)) { $img = "error-24.png"; $error = "{unable_to_smtp_connect}:<br>" . ParseErrorsArray($smtp->errors); } else { if (!$smtp->mail($_GET["sender"])) { $img = "error-24.png"; $error = "{unable_to_smtp_mailfrom}:<br>" . ParseErrorsArray($smtp->errors); } else { if (!$smtp->rcpt($_GET["recipient"])) { $img = "error-24.png"; $error = "{unable_to_smtp_mailto}:<br>" . ParseErrorsArray($smtp->errors); } } } $smtp->quit(); echo "<table style='width:99%;margin-top:10px' class=form>"; echo $tpl->_ENGINE_parse_body("<tr>\n\t\t\t<td width=1% valign='top'><img src='img/{$img}'></td>\n\t\t\t<td style='font-size:14px;font-weight:bold'>{transaction}:\n\t\t\t<div style='font-size:12px'>{$ipaddr} -» {$_GET["sender"]} -» {$_GET["recipient"]}</div> {$error}</td>\n\t\t\t</tr>"); } echo "</table>{$script}"; }
function start($id) { $GLOBALS["CACHEFILE"] = "/usr/share/artica-postfix/ressources/logs/web/mimedefang.resend.progress.{$id}"; $id = intval($id); $sock = new sockets(); $unix = new unix(); if ($id == 0) { echo "ID: {$id} not supported\n"; build_progress(110, "{failed}"); die; } $postgres = new postgres_sql(); $tempfile = $unix->FILE_TEMP(); $Dirtemp = $unix->TEMP_DIR(); $q = new postgres_sql(); $ligne = pg_fetch_array($q->QUERY_SQL("SELECT * FROM quarmsg WHERE id='{$id}'")); if (!$q->ok) { echo "PostgreSQL Error:" . $q->mysql_error . "\n"; build_progress(110, "PostgreSQL {failed}"); die; } $instance = $unix->hostname_g(); $mailfrom = $ligne["mailfrom"]; $mailto = $ligne["mailto"]; $msgmd5 = $ligne["msgmd5"]; if ($mailfrom == null) { $mailfrom = "root@{$instance}"; } echo "From: {$mailfrom}\n"; echo "To..: {$mailto}\n"; echo "ID..: {$msgmd5}\n"; build_progress(20, "{$mailfrom} {to} {$mailto} ({$msgmd5})"); $sql = "SELECT contentid FROM quardata WHERE msgmd5='{$msgmd5}'"; $ligne = pg_fetch_array($q->QUERY_SQL($sql)); if (!$q->ok) { echo "PostgreSQL Error:" . $q->mysql_error . "\n"; build_progress(110, "PostgreSQL {failed}"); die; } $contentid = $ligne["contentid"]; build_progress(30, "msg id: {$contentid}"); @mkdir($Dirtemp, 0777, true); @chmod($Dirtemp, 0777); $sql = "select lo_export({$contentid}, '{$Dirtemp}/{$msgmd5}.gz')"; if ($GLOBALS["VERBOSE"]) { echo "<hr>{$sql}<br>\n"; } $q->QUERY_SQL($sql); if (!$q->ok) { echo "PostgreSQL Error:" . $q->mysql_error . "\n"; build_progress(110, "PostgreSQL {failed}"); die; } build_progress(40, "{uncompress}"); if (!$unix->uncompress("{$Dirtemp}/{$msgmd5}.gz", "{$Dirtemp}/{$msgmd5}.msg")) { @unlink("{$Dirtemp}/{$msgmd5}.gz"); @unlink("{$Dirtemp}/{$msgmd5}.msg"); build_progress(110, "{uncompress} {failed}"); die; } $smtp = new smtp(); $TargetHostname = inet_interfaces(); if (preg_match("#all#is", $TargetHostname)) { $TargetHostname = "127.0.0.1"; } $params["helo"] = $instance; $params["debug"] = true; $params["host"] = $TargetHostname; $params["bindto"] = "127.0.0.1"; build_progress(50, "{connecting}"); if (!$smtp->connect($params)) { build_progress(110, "{connect} {failed}"); @unlink("{$Dirtemp}/{$msgmd5}.msg"); echo "{$smtp->error_number}: Could not connect to `{$TargetHostname}` {$smtp->error_text}\n"; return; } $finalbody = @file_get_contents("{$Dirtemp}/{$msgmd5}.msg"); build_progress(90, "{sending}"); if (!$smtp->send(array("from" => $mailfrom, "recipients" => $mailto, "body" => $finalbody, "headers" => null))) { build_progress(110, "{sending} {failed}"); @unlink("{$Dirtemp}/{$msgmd5}.msg"); echo "{$smtp->error_number}: Could not connect to `{$TargetHostname}` {$smtp->error_text}\n"; $smtp->quit(); return; } @unlink("{$Dirtemp}/{$msgmd5}.msg"); $smtp->quit(); build_progress(100, "{success}"); }
function tests_smtp() { //ini_set('display_errors', 1);ini_set('error_reporting', E_ALL);ini_set('error_prepend_string',null);ini_set('error_append_string',null); header("content-type: application/x-javascript"); $sock = new sockets(); $sock = new wifidog_settings($_GET["ruleid"]); $wifidog_templates = new wifidog_templates($_GET["ruleid"]); $ArticaSplashHotSpotEndTime = $sock->GET_INFO("ArticaSplashHotSpotEndTime"); $proto = "http"; $myHostname = $_SERVER["HTTP_HOST"]; $page = CurrentPageName(); if (isset($_SERVER["HTTPS"])) { $proto = "https"; } $URL_REDIRECT = "{$proto}://{$myHostname}/{$page}?wifidog-confirm=NONE"; $tpl = new templates(); $smtp_sender = $sock->GET_INFO("smtp_sender"); $smtp_senderTR = explode("@", $smtp_sender); $instance = $smtp_senderTR[1]; $random_hash = md5(date('r', time())); $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$wifidog_templates->REGISTER_SUBJECT}"; $body[] = "To: {$smtp_sender}"; $body[] = ""; $body[] = ""; $body[] = $wifidog_templates->REGISTER_MESSAGE; $body[] = $URL_REDIRECT; $body[] = ""; $body[] = ""; $finalbody = @implode("\r\n", $body); $webauth_msmtp = new webauth_msmtp($smtp_sender, $finalbody, $smtp_sender, $_GET["ruleid"]); if ($webauth_msmtp->Send()) { echo "alert('" . $tpl->javascript_parse_text("{$wifidog_templates->REGISTER_SUBJECT}\nTo {$smtp_sender}: {success}") . "');"; return; } $smtp = new smtp(); if ($sock->GET_INFO("smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("smtp_auth_user"); $params["pass"] = $sock->GET_INFO("smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("smtp_server_name"); $params["port"] = $sock->GET_INFO("smtp_server_port"); if (!$smtp->connect($params)) { echo "alert('" . $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}") . "');"; return; } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $smtp_sender, "body" => $finalbody, "headers" => null))) { $smtp->quit(); echo "alert('" . $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}") . "');"; return; } echo "alert('" . $tpl->javascript_parse_text("{$wifidog_templates->REGISTER_SUBJECT}\nTo {$smtp_sender}: {success}") . "');"; $smtp->quit(); }
$params['auth'] = TRUE; // Whether to use basic authentication or not $params['user'] = '******'; // Username for authentication $params['pass'] = '******'; // Password for authentication /*************************************** ** These parameters get passed to the ** smtp->send() call. ***************************************/ $send_params['recipients'] = array('*****@*****.**'); // The recipients (can be multiple) $send_params['headers'] = array('From: "Rafael Garcia" <*****@*****.**>', 'To: rafaellllknives@hotmail.com', 'Subject: Test email'); $send_params['from'] = '*****@*****.**'; // This is used as in the MAIL FROM: cmd // It should end up as the Return-Path: header $send_params['body'] = '.Test email.'; // The body of the email /*************************************** ** The code that creates the object and ** sends the email. ***************************************/ if (is_object($smtp = smtp::connect($params)) and $smtp->send($send_params)) { echo 'Email sent successfully!' . "\r\n\r\n"; // Any recipients that failed (relaying denied for example) will be logged in the errors variable. print_r($smtp->errors); } else { echo 'Error sending mail' . "\r\n\r\n"; // The reason for failure should be in the errors variable print_r($smtp->errors); }
/** * Sends the mail. * * @param array $recipients * @param string $type OPTIONAL * @return mixed */ function send($recipients, $type = 'mail') { if (!defined('CRLF')) { $this->setCrlf($type == 'mail' ? "\n" : "\r\n"); } if (!$this->is_built) { $this->buildMessage(); } switch ($type) { case 'mail': $subject = ''; if (!empty($this->headers['Subject'])) { $subject = $this->_encodeHeader($this->headers['Subject'], $this->build_params['head_charset']); unset($this->headers['Subject']); } // Get flat representation of headers foreach ($this->headers as $name => $value) { $headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']); } $to = $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); if (!empty($this->return_path)) { $result = mail($to, $subject, $this->output, implode(CRLF, $headers), '-f' . $this->return_path); } else { $result = mail($to, $subject, $this->output, implode(CRLF, $headers)); } // Reset the subject in case mail is resent if ($subject !== '') { $this->headers['Subject'] = $subject; } // Return return $result; break; case 'smtp': $smtp =& smtp::connect($this->smtp_params); // Parse recipients argument for internet addresses foreach ($recipients as $recipient) { $addresses = Mail_RFC822::parseAddressList($recipient, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) { $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } } unset($addresses); // These are reused unset($address); // These are reused // Get flat representation of headers, parsing // Cc and Bcc as we go foreach ($this->headers as $name => $value) { if ($name == 'Cc' or $name == 'Bcc') { $addresses = Mail_RFC822::parseAddressList($value, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) { $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } } if ($name == 'Bcc') { continue; } $headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']); } // Add To header based on $recipients argument $headers[] = 'To: ' . $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); // Add headers to send_params $send_params['headers'] = $headers; $send_params['recipients'] = array_values(array_unique($smtp_recipients)); $send_params['body'] = $this->output; // Setup return path if (isset($this->return_path)) { $send_params['from'] = $this->return_path; } elseif (!empty($this->headers['From'])) { $from = Mail_RFC822::parseAddressList($this->headers['From']); $send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host); } else { $send_params['from'] = 'postmaster@' . $this->smtp_params['helo']; } // Send it if (!$smtp->send($send_params)) { $this->errors = $smtp->errors; return false; } return true; break; } }
function _smtp_send(&$recipients) { require_once(LIMB_DIR . '/core/lib/mail/smtp.class.php'); require_once(LIMB_DIR . '/core/lib/mail/mail_rfc822.class.php'); $this->set_smtp_params(SMTP_HOST, SMTP_PORT, SMTP_HELO, SMTP_AUTH, SMTP_USER, SMTP_PASSWORD); $smtp =& smtp :: connect($this->smtp_params); foreach ($recipients as $recipient) { $addresses = mail_rfc822 :: parse_address_list($recipient, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } unset($addresses); // These are reused unset($address); // These are reused foreach ($this->headers as $name => $value) { if ($name == 'Cc' OR $name == 'Bcc') { $addresses = mail_rfc822 :: parse_address_list($value, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } if ($name == 'Bcc') continue; $headers[] = $name . ': ' . $this->_encode_header($value, $this->build_params['head_charset']); } $headers[] = 'To: ' . $this->_encode_header(implode(', ', $recipients), $this->build_params['head_charset']); $send_params['headers'] = $headers; $send_params['recipients'] = array_values(array_unique($smtp_recipients)); $send_params['body'] = $this->output; if (isset($this->return_path)) $send_params['from'] = $this->return_path; elseif (!empty($this->headers['From'])) { $from = mail_rfc822 :: parse_address_list($this->headers['From']); $send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host); } else $send_params['from'] = 'postmaster@' . $this->smtp_params['helo']; if (!$smtp->send($send_params)) { $this->errors = $smtp->errors; return false; } return true; }
function sendEmail($subject, $content = null, $recipient) { $unix = new unix(); $hostname = "ks220503.kimsufi.com"; $mailfrom = "*****@*****.**"; $TargetHostname = "37.187.142.164"; $params["helo"] = $hostname; $params["host"] = $TargetHostname; $params["do_debug"] = true; $params["debug"] = true; $params["auth"] = true; $params["user"] = "******"; $params["pass"] = "******"; $smtp = new smtp($params); if (!$smtp->connect($params)) { smtp::events("Error {$smtp->error_number}: Could not connect to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); return; } $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$hostname}"; $content = str_replace("\r\n", "\n", $content); $content = str_replace("\n", "\r\n", $content); $body[] = "Return-Path: <{$mailfrom}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$mailfrom} (robot)"; $body[] = "Subject: {$subject}"; $body[] = "To: {$recipient}"; $body[] = "MIME-Version: 1.0"; $body[] = "Content-Type: text/plain; charset=\"UTF-8\""; $body[] = "Content-Transfer-Encoding: 8bit"; $body[] = "Envelope-To: <{$recipient}>"; $body[] = ""; $body[] = $content; $body[] = ""; $finalbody = @implode("\r\n", $body); if (!$smtp->send(array("from" => "{$mailfrom}", "recipients" => $recipient, "body" => $finalbody, "headers" => null))) { smtp::events("Error {$smtp->error_number}: Could not send to `{$TargetHostname}` {$smtp->error_text}", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); return; } smtp::events("Success sending message trough [{$TargetHostname}:25]", __FUNCTION__, __FILE__, __LINE__); $smtp->quit(); }
/** * 邮件发送 * * @param: $name[string] 接收人姓名 * @param: $email[string] 接收人邮件地址 * @param: $subject[string] 邮件标题 * @param: $content[string] 邮件内容 * @param: $type[int] 0 普通邮件, 1 HTML邮件 * @param: $notification[bool] true 要求回执, false 不用回执 * * @return boolean */ function send_mail($name, $email, $subject, $content, $type = 0, $notification=false) { /* 如果邮件编码不是EC_CHARSET,创建字符集转换对象,转换编码 */ if ($GLOBALS['_CFG']['mail_charset'] != EC_CHARSET) { $name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $name); $subject = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $subject); $content = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $content); $shop_name = ecs_iconv(EC_CHARSET, $GLOBALS['_CFG']['mail_charset'], $GLOBALS['_CFG']['shop_name']); } $charset = $GLOBALS['_CFG']['mail_charset']; /** * 使用mail函数发送邮件 */ if ($GLOBALS['_CFG']['mail_service'] == 0 && function_exists('mail')) { /* 邮件的头部信息 */ $content_type = ($type == 0) ? 'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset; $headers = array(); $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; $headers[] = $content_type . '; format=flowed'; if ($notification) { $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; } $res = @mail($email, '=?' . $charset . '?B?' . base64_encode($subject) . '?=', $content, implode("\r\n", $headers)); if (!$res) { $GLOBALS['err'] ->add($GLOBALS['_LANG']['sendemail_false']); return false; } else { return true; } } /** * 使用smtp服务发送邮件 */ else { /* 邮件的头部信息 */ $content_type = ($type == 0) ? 'Content-Type: text/plain; charset=' . $charset : 'Content-Type: text/html; charset=' . $charset; $content = base64_encode($content); $headers = array(); $headers[] = 'Date: ' . gmdate('D, j M Y H:i:s') . ' +0000'; $headers[] = 'To: "' . '=?' . $charset . '?B?' . base64_encode($name) . '?=' . '" <' . $email. '>'; $headers[] = 'From: "' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; $headers[] = 'Subject: ' . '=?' . $charset . '?B?' . base64_encode($subject) . '?='; $headers[] = $content_type . '; format=flowed'; $headers[] = 'Content-Transfer-Encoding: base64'; $headers[] = 'Content-Disposition: inline'; if ($notification) { $headers[] = 'Disposition-Notification-To: ' . '=?' . $charset . '?B?' . base64_encode($shop_name) . '?='.'" <' . $GLOBALS['_CFG']['smtp_mail'] . '>'; } /* 获得邮件服务器的参数设置 */ $params['host'] = $GLOBALS['_CFG']['smtp_host']; $params['port'] = $GLOBALS['_CFG']['smtp_port']; $params['user'] = $GLOBALS['_CFG']['smtp_user']; $params['pass'] = $GLOBALS['_CFG']['smtp_pass']; if (empty($params['host']) || empty($params['port'])) { // 如果没有设置主机和端口直接返回 false $GLOBALS['err'] ->add($GLOBALS['_LANG']['smtp_setting_error']); return false; } else { // 发送邮件 if (!function_exists('fsockopen')) { //如果fsockopen被禁用,直接返回 $GLOBALS['err']->add($GLOBALS['_LANG']['disabled_fsockopen']); return false; } include_once(ROOT_PATH . 'includes/cls_smtp.php'); static $smtp; $send_params['recipients'] = $email; $send_params['headers'] = $headers; $send_params['from'] = $GLOBALS['_CFG']['smtp_mail']; $send_params['body'] = $content; if (!isset($smtp)) { $smtp = new smtp($params); } if ($smtp->connect() && $smtp->send($send_params)) { return true; } else { $err_msg = $smtp->error_msg(); if (empty($err_msg)) { $GLOBALS['err']->add('Unknown Error'); } else { if (strpos($err_msg, 'Failed to connect to server') !== false) { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['smtp_connect_failure'], $params['host'] . ':' . $params['port'])); } else if (strpos($err_msg, 'AUTH command failed') !== false) { $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_login_failure']); } elseif (strpos($err_msg, 'bad sequence of commands') !== false) { $GLOBALS['err']->add($GLOBALS['_LANG']['smtp_refuse']); } else { $GLOBALS['err']->add($err_msg); } } return false; } } } }
function tests_smtp() { ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); ini_set('error_prepend_string', null); ini_set('error_append_string', null); $tpl = new templates(); $sock = new sockets(); $sock = new wifidog_settings($_POST["ruleid"]); $mobile = $_POST["mobile"]; $CODE_NUMBER = "1234"; $wifidog_templates = new wifidog_templates($_POST["ruleid"]); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_SUBJECT = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_SUBJECT); $wifidog_templates->SMS_SMTP_BODY = str_replace("%MOBILE%", $mobile, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%CODE%", $CODE_NUMBER, $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("%TIME%", time(), $wifidog_templates->SMS_SMTP_BODY); $wifidog_templates->SMS_SMTP_BODY = str_replace("\n", "\r\n", $wifidog_templates->SMS_SMTP_BODY); echo "Rule: {$_POST["ruleid"]}\n"; $smtp_sender = $sock->GET_INFO("sms_smtp_sender"); $smtp_senderTR = explode("@", $smtp_sender); $instance = $smtp_senderTR[1]; $sms_smtp_recipient = $sock->GET_INFO("sms_smtp_recipient"); $random_hash = md5(date('r', time())); $boundary = "{$random_hash}/{$instance}"; $body[] = "Return-Path: <{$smtp_sender}>"; $body[] = "Date: " . date("D, d M Y H:i:s") . " +0100 (CET)"; $body[] = "From: {$smtp_sender}"; $body[] = "Subject: {$wifidog_templates->SMS_SMTP_SUBJECT}"; $body[] = "To: {$sms_smtp_recipient}"; $body[] = "Auto-Submitted: auto-replied"; $body[] = "MIME-Version: 1.0"; $body[] = "Content-Type: multipart/mixed;"; $body[] = "\tboundary=\"{$boundary}\""; $body[] = "Content-Transfer-Encoding: 8bit"; $body[] = "Message-Id: <{$random_hash}@{$instance}>"; $body[] = "--{$boundary}"; $body[] = "Content-Description: Notification"; $body[] = "Content-Type: text/plain; charset=us-ascii"; $body[] = ""; $body[] = $wifidog_templates->SMS_SMTP_BODY; $body[] = ""; $body[] = ""; $body[] = "--{$boundary}"; $finalbody = @implode("\r\n", $body); include_once dirname(__FILE__) . "/ressources/class.webauth-sms-msmtp.inc"; $webauth_msmtp = new webauth_sms_msmtp($finalbody, $_POST["ruleid"]); if ($webauth_msmtp->Send()) { echo $tpl->javascript_parse_text("{$wifidog_templates->SMS_SMTP_SUBJECT}\nTo {$sms_smtp_recipient}: {success}", 1); return; } $smtp = new smtp(); if ($sock->GET_INFO("sms_smtp_auth_user") != null) { $params["auth"] = true; $params["user"] = $sock->GET_INFO("sms_smtp_auth_user"); $params["pass"] = $sock->GET_INFO("sms_smtp_auth_passwd"); } $params["host"] = $sock->GET_INFO("sms_smtp_server_name"); $params["port"] = $sock->GET_INFO("sms_smtp_server_port"); if (!$smtp->connect($params)) { echo $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}", 1); return; } if (!$smtp->send(array("from" => $smtp_sender, "recipients" => $sms_smtp_recipient, "body" => $finalbody, "headers" => null))) { $smtp->quit(); echo $tpl->javascript_parse_text("{error_while_sending_message} {error} {$smtp->error_number} {$smtp->error_text}", 1); return; } echo $tpl->javascript_parse_text("{$wifidog_templates->SMS_SMTP_SUBJECT}\nTo {$sms_smtp_recipient}: {success}", 1); $smtp->quit(); }
/** * Sends the mail. * * @param array $recipients Array of receipients to send the mail to * @param string $type How to send the mail ('mail' or 'sendmail' or 'smtp') * @return mixed */ public function send($recipients, $type = 'mail') { if (!defined('CRLF')) { $this->setCRLF(($type == 'mail' or $type == 'sendmail') ? "\n" : "\r\n"); } $this->build(); switch ($type) { case 'mail': $subject = ''; if (!empty($this->headers['Subject'])) { $subject = $this->encodeHeader($this->headers['Subject'], $this->build_params['head_charset']); unset($this->headers['Subject']); } // Get flat representation of headers foreach ($this->headers as $name => $value) { $headers[] = $name . ': ' . $this->encodeHeader($value, $this->build_params['head_charset']); } $to = $this->encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); if (!empty($this->return_path)) { $result = mail($to, $subject, $this->output, implode(CRLF, $headers), '-f' . $this->return_path); } else { $result = mail($to, $subject, $this->output, implode(CRLF, $headers)); } // Reset the subject in case mail is resent if ($subject !== '') { $this->headers['Subject'] = $subject; } // Return return $result; break; case 'sendmail': // Get flat representation of headers foreach ($this->headers as $name => $value) { $headers[] = $name . ': ' . $this->encodeHeader($value, $this->build_params['head_charset']); } // Encode To: $headers[] = 'To: ' . $this->encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); // Get return path arg for sendmail command if necessary $returnPath = ''; if (!empty($this->return_path)) { $returnPath = '-f' . $this->return_path; } $pipe = popen($this->sendmail_path . " " . $returnPath, 'w'); $bytes = fputs($pipe, implode(CRLF, $headers) . CRLF . CRLF . $this->output); $r = pclose($pipe); return $r; break; case 'smtp': require_once dirname(__FILE__) . '/smtp.php'; require_once dirname(__FILE__) . '/RFC822.php'; $smtp =& smtp::connect($this->smtp_params); // Parse recipients argument for internet addresses foreach ($recipients as $recipient) { $addresses = Mail_RFC822::parseAddressList($recipient, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) { $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } } unset($addresses); // These are reused unset($address); // These are reused // Get flat representation of headers, parsing // Cc and Bcc as we go foreach ($this->headers as $name => $value) { if ($name == 'Cc' or $name == 'Bcc') { $addresses = Mail_RFC822::parseAddressList($value, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) { $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } } if ($name == 'Bcc') { continue; } $headers[] = $name . ': ' . $this->encodeHeader($value, $this->build_params['head_charset']); } // Add To header based on $recipients argument $headers[] = 'To: ' . $this->encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); // Add headers to send_params $send_params['headers'] = $headers; $send_params['recipients'] = array_values(array_unique($smtp_recipients)); $send_params['body'] = $this->output; // Setup return path if (isset($this->return_path)) { $send_params['from'] = $this->return_path; } elseif (!empty($this->headers['From'])) { $from = Mail_RFC822::parseAddressList($this->headers['From']); $send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host); } else { $send_params['from'] = 'postmaster@' . $this->smtp_params['helo']; } // Send it if (!$smtp->send($send_params)) { $this->errors = $smtp->getErrors(); return false; } return true; break; } }
function sendthanks($email, $name, $vars, $page = 0) { global $thisUrl; $emailSubj = "Thank you!"; include_once JG_PLUGIN_DIR . '/lib/class.html.mime.mail.inc'; define('CRLF', "\r\n", TRUE); $wpjg_generalSettings = get_option('jg_general_settings'); $mail = new html_mime_mail(array("X-Mailer: " . $wpjg_generalSettings['mailer_id'])); if ($wpjg_generalSettings['smtp_uname'] != "" || $wpjg_generalSettings['smtp_pword'] != "") { $smtpauth = TRUE; } else { $smtpauth = FALSE; } $tosend = 'thanks_page'; if (file_exists(JG_PLUGIN_DIR . '/email/' . $tosend . '.txt') && file_exists(JG_PLUGIN_DIR . '/email/' . $tosend . '.html')) { $email_body = fread($fp = fopen(JG_PLUGIN_DIR . '/email/' . $tosend . '.txt', 'r'), filesize(JG_PLUGIN_DIR . '/email/' . $tosend . '.txt')); fclose($fp); $html_email_body = fread($fp = fopen(JG_PLUGIN_DIR . '/email/' . $tosend . '.html', 'r'), filesize(JG_PLUGIN_DIR . '/email/' . $tosend . '.html')); fclose($fp); foreach ($vars as $key => $val) { if (strpos($email_body, '[' . trim($key) . ']')) { $email_body = preg_replace("/\\[{$key}\\]/", $val, $email_body); } } $email_body = preg_replace('/\\[(\\S.*?)\\]/', '', $email_body); if ($html_email_body) { foreach ($vars as $key => $val) { if (strpos($html_email_body, '[' . trim($key) . ']')) { $html_email_body = preg_replace("/\\[{$key}\\]/", $val, $html_email_body); } } $html_email_body = preg_replace('/\\[(\\S.*?)\\]/', '', $html_email_body); $mail->add_html($html_email_body, $email_body, JG_PLUGIN_DIR . '/email/'); //$mail->add_html($html_email_body, $email_body, 'img'); } else { $mail->add_text($email_body); } $mail->build_message(); $headers = array('From: "' . $wpjg_generalSettings['friendly_name'] . '" <' . $wpjg_generalSettings['email_from'] . '>', 'To: "' . $name . '" <' . $email . '>', 'Subject: ' . $emailSubj, 'Reply-To: ' . $wpjg_generalSettings['reply_to']); if ($wpjg_generalSettings['useSMTP']) { include_once JG_PLUGIN_DIR . '/lib/class.smtp.inc'; $params = array('host' => $wpjg_generalSettings['smtp_server'], 'port' => $wpjg_generalSettings['smtp_port'], 'helo' => $wpjg_generalSettings['smtp_helo'], 'auth' => $smtpauth, 'user' => $wpjg_generalSettings['smtp_uname'], 'pass' => $wpjg_generalSettings['smtp_pword']); //echo '<PRE>'.htmlentities($mail->get_rfc822($name, $email, $friendly_name, $email_from, $email_subj, $headers)).'</PRE>'; $smtp =& smtp::connect($params); $send_params = array('from' => $wpjg_generalSettings['email_from'], 'recipients' => $email, 'headers' => $headers); $mail->smtp_send($smtp, $send_params); } else { $mail->send($name, $email, $wpjg_generalSettings['friendly_name'], $wpjg_generalSettings['email_from'], $emailSubj, $headers); } //file_put_contents( '/var/www/html/test6/PHP_errors.log' ,print_R('thanksemail'. htmlentities($mail->get_rfc822($name, $email, $wpjg_generalSettings['friendly_name'], $wpjg_generalSettings['email_from'], $emailSubj, $headers)), true), FILE_APPEND ); //echo '<PRE>'.htmlentities($mail->get_rfc822($name, $email, $friendly_name, $email_from, $email_subj, $headers)).'</PRE>'; } }