<? /*
    LibreSSL - CAcert web application
    Copyright (C) 2004-2008  CAcert Inc.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/

$_SESSION['mconn'] = mysql_connect("db", "@MYSQL_USERNAME@", "@MYSQL_PASSWORD@");
if ($_SESSION['mconn'] != FALSE)
{
    mysql_select_db("cacert");
    $_SESSION['mconn'] = TRUE;
}
$_SESSION['_config']['normalhostname'] = "test.cacert.org:8443";
$_SESSION['_config']['securehostname'] = "secure.test.cacert.org:8443";
$_SESSION['_config']['tverify'] = "tverify.cacert.org";

function sendmail($to, $subject, $message, $from, $replyto = "", $toname = "", $fromname = "", $errorsto = "returns@cacert.org", $use_utf8 = true)
{
    $lines = explode("\n", $message);
    $message = "";
    foreach($lines as $line)
    {
        $line = trim($line);
        if($line == ".")
            $message .= " .\n";
        else
            $message .= $line."\n";
    }

    if($fromname == "")
        $fromname = $from;

    $bits = explode(",", $from);
    $from = addslashes($bits['0']);
    $fromname = addslashes($fromname);

    $smtp = fsockopen("smtp", 25);
    if(!$smtp)
    {
        echo("Could not connect to mailserver at localhost:25\n");
        return;
    }
    $InputBuffer = fgets($smtp, 1024);
    fputs($smtp, "EHLO test.cacert.org\r\n");
    $InputBuffer = fgets($smtp, 1024);
    fputs($smtp, "MAIL FROM:<returns@cacert.org>\r\n");
    $InputBuffer = fgets($smtp, 1024);
    $bits = explode(",", $to);
    foreach($bits as $user)
        fputs($smtp, "RCPT TO:<".trim($user).">\r\n");
    $InputBuffer = fgets($smtp, 1024);
    fputs($smtp, "DATA\r\n");
    $InputBuffer = fgets($smtp, 1024);
    fputs($smtp, "X-Mailer: CAcert.org Website\r\n");
    if (array_key_exists("REMOTE_ADDR", $_SERVER))
        fputs($smtp, "X-OriginatingIP: ".$_SERVER["REMOTE_ADDR"]."\r\n");
    fputs($smtp, "Sender: $errorsto\r\n");
    fputs($smtp, "Errors-To: $errorsto\r\n");
    if($replyto != "")
        fputs($smtp, "Reply-To: $replyto\r\n");
    else
        fputs($smtp, "Reply-To: $from\r\n");
    fputs($smtp, "From: $from\r\n");
    fputs($smtp, "To: $to\r\n");
    if(preg_match("/[^a-zA-Z0-9 .-\[\]!_@]/",$subject))
    {
        fputs($smtp, "Subject: =?utf-8?B?".base64_encode(recode("html..utf-8", $subject))."?=\r\n");
    }
    else
    {
        fputs($smtp, "Subject: $subject\r\n");
    }
    fputs($smtp, "Mime-Version: 1.0\r\n");
    if($use_utf8)
    {
        fputs($smtp, "Content-Type: text/plain; charset=\"utf-8\"\r\n");
    }
    else
    {
        fputs($smtp, "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n");
    }
    fputs($smtp, "Content-Transfer-Encoding: quoted-printable\r\n");
    fputs($smtp, "Content-Disposition: inline\r\n");

//		fputs($smtp, "Content-Transfer-Encoding: BASE64\r\n");
    fputs($smtp, "\r\n");
//		fputs($smtp, chunk_split(base64_encode(recode("html..utf-8", $message)))."\r\n.\r\n");
    $encoded_lines = explode( "\n", str_replace("\r", "", $message) );
    array_walk( $encoded_lines,
        function (&$a) {
            $a = quoted_printable_encode(recode("html..utf-8", $a));
        });
    $encoded_message = implode("\n", $encoded_lines);

    $encoded_message = str_replace("\r.", "\r=2E", $encoded_message);
    $encoded_message = str_replace("\n.", "\n=2E", $encoded_message);
    fputs($smtp, $encoded_message);
    fputs($smtp, "\r\n.\r\n");
    fputs($smtp, "QUIT\n");
    $InputBuffer = fgets($smtp, 1024);
    fclose($smtp);
}