0

I'm receiving an error with the email form not going through and receiving an error message. I've checked for parse and syntax errors and didn't come across any. I think that I need to upgrade the email form from php to smtp email settings, but not sure where exactly to start. Has anyone navigated this before and any tips on troubleshooting this issue? Could it be something else that is causing the error message?

<?php
/*
=== Copyright (c) x2cms.com 2011 === BUILDER_VERSION:12
*/

if (!defined("BASE_PATH")) define('BASE_PATH', isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : substr(str_replace('\\\\','\\',$_SERVER['PATH_TRANSLATED']),0, -1*strlen($_SERVER['SCRIPT_NAME'])));

/* initialize a session. */
session_start();

require("mailer.php");
require("template-loader.php");
require("settings-loader.php");

$settings['captcha_required'] = array_key_exists('captcha',$_POST);

// disable magic quotes
// --------------------------------------------------------------------------------------------

// languages
// --------------------------------------------------------------------------------------------
// load language
read_language_xml(BASE_PATH.'/emaileverything.php.xml');

// add default language for form
add_language_def('email_message','The following information was posted from your %s form');
add_language_def('email_subject','%s form results');
add_language_def('error_required','is a required field');
add_language_def('mail_sender','Mail sender IP address:');
add_language_def('go_back','&laquo; back');
add_language_def('error_captcha','The validation code you entered was invalid');
add_language_def('error_no_email_to','You must enter an email address');
add_language_def('error_no_email_from','You must enter an email address to send to.');
add_language_def('error_no_message','You must enter a message');
add_language_def('success_message','Thank you, the form has been processed successfully.');
add_language_def('error_message','The following error(s) occured: ');

// uploader
add_language_def('error_file_size','%s file is too big, the maximum file size is (%smb)');
add_language_def('file_link','File Link');
add_language_def('error_upload','Unable to save uploaded file, please check site uploaded directory and permissions.');
add_language_def('error_file_type','allowed files are %s. Yours was %s.');

// settings
// --------------------------------------------------------------------------------------------
$settings['form_id'] = ''; // form identifier
$settings['form_name'] = $_SERVER['HTTP_HOST']; // the name of the form used, defaults to the script address
$settings['confirmation_message'] = ''; // the confirmation message used with the template
$settings['confirmation_url'] = ''; // if specified we redirect to a confirmation page
$settings['email_subject'] = ''; // the email subject
$settings['email_to'] = ''; // who do we send the email to
$settings['email_from'] = ''; // the customer's email submitting the form
$settings['copy_mail_to_sender'] = 'false'; // whether we copy the form email to the mail sender $email_from
$settings['required_fields'] = ''; // required field names seperated by |
$settings['email_template'] = ''; // the email template to use
$settings['upload_max_size'] = '20'; // size in mb per file
$settings['upload_check_extension'] = 'false';
$settings['upload_allowed_extensions'] = 'jpg|jpeg|gif|png|doc|docx|txt|rtf|pdf|xls|xlsx|ppt|pptx|zip'; // allowed file extensions


// general functions
// --------------------------------------------------------------------------------------------

if(!function_exists('str_ireplace'))
{
    function str_ireplace($needle, $str, $haystack)
    {
        $needle = preg_quote($needle, '/');
        return preg_replace("/$needle/i", $str, $haystack);
    }
}

// ensure filename is in friendly format
function safe_filename($filename)
{
    $filename = trim($filename);
    $filename = str_replace("/", "", $filename);
    $filename = str_replace("\\", "", $filename);
    $filename = str_replace(">", "", $filename);
    $filename = str_replace("<", "", $filename);

    return $filename;
}

// check for required fields
function isRequired($field_name)
{
    global $required_fieldsarr;
    if(is_array($required_fieldsarr))
    {
        foreach ($required_fieldsarr as $required_field_name)
        {
            if(strtoupper($required_field_name) == strtoupper($field_name))
            {
                return true;
            }
        }
    }
    return false;
}

function get_file_extension($filename)
{
    return end(explode(".", $filename));
}

// uploaded files
function uploadedFiles()
{
    $returnStr = '';

    $returnStr .= uploadFile("userfile");

    for($i = 0; $i<10; $i++)
    {
        $returnStr .= uploadFile("userfile".$i);
    }

    return $returnStr;
}

function uploadFile($fieldName)
{
    global $error_message, $_FILES, $language, $settings;

    if(!isset($_FILES[$fieldName]))
    {
        return;
    }

    $allowed_file_ext_arr = explode("|", $settings['upload_allowed_extensions']);

    $returnStr = '';

    // try array of files first
    if(is_array($_FILES[$fieldName]))
    {
        foreach ($_FILES[$fieldName]["error"] as $key => $error)
        {
            if ($error == UPLOAD_ERR_OK)
            {
                $file_type = $_FILES[$fieldName]['type'][$key];
                $file_size = $_FILES[$fieldName]['size'][$key];
                $tmp_name = $_FILES[$fieldName]["tmp_name"][$key];
                $name = $_FILES[$fieldName]["name"][$key];

                $error = "";

                // check file size
                if ($file_size > ((int)$settings['upload_max_size'] * 1024 * 1024))
                {
                    $error .= sprintf($language['error_file_size'], $name, $settings['upload_max_size']).'<br/>';
                }

                // check file type
                if($settings['upload_check_extension'] == 'true')
                {
                    if (!in_array(get_file_extension($name),$allowed_file_ext_arr))
                    {
                        $error .= sprintf($language['error_file_type'], $settings['upload_allowed_extensions'], $file_type).'<br/>';
                    }
                }

                if ($error == "")
                {
                    if(is_uploaded_file($tmp_name))
                    {
                        //  sanatize file name
                        $name = preg_replace(array("/\s+/", "/[^-\.\w]+/"), array("_", ""), trim($name));

                        if(move_uploaded_file($tmp_name, "uploaded/$name"))
                        {
                            $returnStr .= "<tr><td>".$language['file_name']."</td><td><a href='http://".$_SERVER['HTTP_HOST']."/uploaded/$name'>$name</a></td></tr>";
                        }
                        else
                        {
                            $error_message = $language['error_upload'].'<br/>';
                        }
                    }
                }
                else
                {
                    $error_message .= $error;
                }
            }
        }
    }
    else // try single file
    {
        if($_FILES[$fieldName]["error"] == UPLOAD_ERR_OK)
        {
            $file_type = $_FILES[$fieldName]['type'][$key];
            $file_size = $_FILES[$fieldName]['size'][$key];
            $tmp_name = $_FILES[$fieldName]["tmp_name"][$key];
            $name = $_FILES[$fieldName]["name"][$key];

            $error = "";

            // check file size
            if ($file_size > ((int)$settings['upload_max_size'] * 1024 * 1024))
            {
                $error .= sprintf($language['error_file_size'], $key, ($maxSize/1000)).'<br/>';
            }

            // check file type
            if($settings['upload_check_extension'] == 'true')
            {
                if (!in_array(get_file_extension($name),$allowed_file_ext_arr))
                {
                    $error .= $key." Allowed files are ".$settings['upload_allowed_extensions'].". Yours was ".$file_type."<br/>";
                }
            }

            if ($error == "")
            {
                if(is_uploaded_file($tmp_name))
                {
                    //  sanatize file name
                    $name = preg_replace(array("/\s+/", "/[^-\.\w]+/"), array("_", ""), trim($name));

                    if(move_uploaded_file($tmp_name, "uploaded/$name"))
                    {
                        $returnStr .= "<tr><td>".$language['file_name']."</td><td><a href='http://".$_SERVER['HTTP_HOST']."/uploaded/$name'>$name</a></td></tr>";
                    }
                    else
                    {
                        $error_message = $language['error_upload'].'<br/>';
                    }
                }
            }
            else
            {
                $error_message .= $error;
            }
        }
    }

    return $returnStr;
}

// read POST and GET data
// --------------------------------------------------------------------------------------------

// did we specify a form name in either GET OR POST

// get the form id
if(trim($_POST['id']) != '')
{
    $settings['form_id'] = trim($_POST['id']);
}

if(trim($_GET['id']) != '')
{
    $settings['form_id'] = trim($_GET['id']);
}

// 5.1 get parameters from XML

load_config('emaileverything-settings.xml');
load_config($settings['form_id'].'.xml');

// parse_settings_xml(safe_filename($settings['form_id']).'-settings.xml');


// check_referrer();

// get parameters from POST, POST overwrites settings from XML

if(trim($_POST['FormName']) != '')
{
    $settings['form_name'] = trim($_POST['FormName']);
}

if(trim($_POST['EmailSubject']) != '')
    $settings['email_subject'] = trim($_POST['EmailSubject']);

if(trim($_POST['EmailTo']) != '')
    $settings['email_to'] = trim($_POST['EmailTo']);

if(trim($_POST['email']) != '')
    $settings['email_from'] = trim($_POST['email']);

if(trim($_POST['OKMessage']) != '')
    $settings['confirmation_message'] = trim($_POST['OKMessage']);

if(trim($_POST['OKURL']) != '')
    $settings['confirmation_url'] = trim($_POST['OKURL']);

if(trim($_POST['CopyToSender']) != '')
    $settings['copy_mail_to_sender'] = trim($_POST['CopyToSender']);

if(trim($_POST['UseTemplate']) != '')
    $settings['email_template'] = trim($_POST['UseTemplate']);

if(trim($_POST['TemplateID']) != '')
    $settings['template_id'] = trim($_POST['TemplateID']);

if(trim($_POST['RequiredFields']) != '')
    $settings['required_fields'] = trim($_POST['RequiredFields']);

// alternative field names from trellix
if(trim($_POST['tlx_Subject']) != '')
    $settings['email_subject'] = trim($_POST['tlx_Subject']);

if($_POST['tlx_EmailTo'] != '')
    $settings['email_to'] = trim($_POST['tlx_EmailTo']);

if($_POST['tlx_OKMessage'] != '')
    $settings['confirmation_message'] = trim($_POST['tlx_OKMessage']);

// build the email
// --------------------------------------------------------------------------------------------
// now we do some work with our required fields, split on | to get each required field name
$required_fieldsarr = explode("|", $settings['required_fields']);

$error_message = '';

// check required fields
foreach ($_POST as $key => $val)
{
    // see if field is required
    if(isRequired($key) && ($val == ''))
    {
        $error_message .= $key." ".$language['error_required'].".<br/>";
    }
}

// build email message
if($settings['email_template'] != '') // are we using a email template
{
    // safe file name
    $settings['email_template'] = safe_filename($settings['email_template']);

    // check to see if template exists
    if(file_exists($settings['email_template']))
    {
        $email_message = file_get_contents($settings['email_template']);

        // replace key with value
        foreach ($_POST as $key => $val)
        {
            $email_message = str_ireplace('{'.$key.'}', $val, $email_message);
        }

        // remove remaining
        $email_message = preg_replace('/\{(\w*)\}/', '', $email_message);
    }
}
else
{
    $email_message = sprintf($language['email_message'],$settings['form_name']);

    $email_message .= '<br/><br/><table cellpadding="5" cellspacing="5" border="1"><tr><th>Field Name</th><th>Value</th></tr>';`

    foreach ($_POST as $key => $val)
ADyson
  • 57,178
  • 14
  • 51
  • 63
  • I don't see any code that actually sends an email. It's probably done in the mailer.php file that is included ? – Andreas Oct 15 '21 at 15:34
  • It's very difficult to say what might be causing your error message when 1) you didn't tell us what the error message says and 2) you've provided a very large amount of code to wade through, but yet nothing which actually sends an email. 90% of this is _probably_ irrelevant to your issue, but it's hard to know for sure without more info. Please read [ask] and how to create a [mre], also take the [tour] and then please edit your question to try and make it clearer for us. Thanks. – ADyson Oct 15 '21 at 15:40
  • My apologies. I've been trouble shooting different issues as they've come up and copied and pasted the wrong file. The issue first appeared after submitting a request for quote, and received an error message with parse and syntax errors which I've fixed. That fixed the parse syntax error that I was receiving and now when you submit the request for quote form you receive both a 'message not sent' and 'thank you for submitting' but the email doesn't go through. Since I've checked the php code and cleared the cache, but that didn't work either. Now I'm not sure what the issue could be – Michelle Beane Oct 15 '21 at 22:49
  • Ok thanks. Without any more concrete information such as relevant code which generates those output messages or sends the emails, about the best we can do is point you to the very comprehensive troubleshooting guide at https://stackoverflow.com/questions/24644436/php-mail-function-doesnt-complete-sending-of-e-mail – ADyson Oct 16 '21 at 08:02
  • You can still edit your question to contain a more useful code sample too though – ADyson Oct 16 '21 at 08:04

0 Answers0