php - 将php电子邮件表单升级为smtp
问题描述
我收到一个错误,电子邮件表单无法通过并收到错误消息。我检查了解析和语法错误,没有遇到任何错误。我认为我需要将电子邮件表单从 php 升级到 smtp 电子邮件设置,但不确定从哪里开始。以前有没有人浏览过这个问题以及解决这个问题的任何提示?可能是其他导致错误消息的原因吗?
<?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','« 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)
解决方案
推荐阅读
- video - 在 MATLAB 中无法解析名称 vision.VideoFileReader 错误
- .net-core - 无法在 Visual Studio 2019 中调试 Azure 函数 v3
- python-3.6 - lxml.etree.XPathEvalError:无效的谓词
- python - 循环不同的数据集并使用 LSTM 进行预测
- c - 当我没有定义新变量来存储两个整数之和时,我的代码无法按预期工作
- java - 使用 JaCoCo 和 spring-boot-maven-plugin 生成代码覆盖率
- sparql - 按标签查询实体
- android - 当活动失去焦点时,onKeyUp 不起作用
- mysql - 来自 kubernetes 的白名单 mysql 主机
- amazon-cloudformation - CloudFormation - 用户数据以 Ubuntu 用户身份运行