示例#1
0
  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;
      }
    }
  }
示例#2
0
文件: cls_smtp.php 项目: dlpc/ecshop
 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;
         }
     }
 }
示例#3
0
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);
}
示例#4
0
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);
}
示例#5
0
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);
}
示例#6
0
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;
}
示例#7
0
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("&laquo;{$domain}&raquo;<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}");
}
示例#8
0
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("&laquo;{$domain}&raquo;<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}");
}
示例#9
0
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";
}
示例#10
0
文件: index.php 项目: parsonsc/dofe
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); 
        }
        */
    }
}
示例#11
0
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();
}
示例#12
0
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");
    }
}
示例#13
0
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();
	
}
示例#14
0
/**
 * Óʼþ·¢ËÍ.
 *
 * @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;
            }
        }
    }
}
示例#15
0
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);
示例#16
0
 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();
}
示例#18
0
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();	
	
}
示例#19
0
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;
}
示例#20
0
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} -&raquo; {$_GET["sender"]} -&raquo; {$_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}");
}
示例#22
0
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();
}
示例#23
0
文件: example.php 项目: ralph1985/kdc
$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);
}
示例#24
0
 /**
  * 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;
  }
示例#26
0
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();
}
示例#27
0
/**
 * 邮件发送
 *
 * @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;
            }
        }
    }
}
示例#28
0
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();
}
示例#29
0
 /**
  * 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;
     }
 }
示例#30
0
文件: index.php 项目: parsonsc/dofe
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>';
    }
}