Click here to Skip to main content
15,880,608 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am working on sending message from HTML form with the following PHP code for its functionality:
<?php
phpinfo();
error_reporting(-1);
ini_set('display_errors', 'On');
set_error_handler("var_dump");
function ShutdownHandler() {
    if (is_array($error = error_get_last())) {
        return (call_user_func_array('ErrorHandler', $error));
    };
    return (TRUE);
};
register_shutdown_function('ShutdownHandler');
// ----------------------------------------------------------------------------------------------------
// - Error Handler
// ----------------------------------------------------------------------------------------------------
function ErrorHandler($type, $message, $file, $line) {
    $_ERRORS = Array(0x0001 => 'E_ERROR', 0x0002 => 'E_WARNING', 0x0004 => 'E_PARSE', 0x0008 => 'E_NOTICE', 0x0010 => 'E_CORE_ERROR', 0x0020 => 'E_CORE_WARNING', 0x0040 => 'E_COMPILE_ERROR', 0x0080 => 'E_COMPILE_WARNING', 0x0100 => 'E_USER_ERROR', 0x0200 => 'E_USER_WARNING', 0x0400 => 'E_USER_NOTICE', 0x0800 => 'E_STRICT', 0x1000 => 'E_RECOVERABLE_ERROR', 0x2000 => 'E_DEPRECATED', 0x4000 => 'E_USER_DEPRECATED');
    if (!@is_string($name = @array_search($type, @array_flip($_ERRORS)))) {
        $name = 'E_UNKNOWN';
    };
    return (print (@sprintf("%s Error in file \xBB%s\xAB at line %d: %s\n", $name, @basename($file), $line, $message)));
};
$old_error_handler = set_error_handler("ErrorHandler");
//get data from form
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  //echo($_POST)  ;
  //echo gettype($_POST) . "hello";
$name =$_POST['name'];
echo $name;
$email =$_POST['email'];
echo $email;
$message = $_POST['message'];
echo $message;
$subject =  $_POST['subject'];
echo $subject;

$fromaddress = "From: abhinavkishorem9@gmail.com";
$toaddress='to:'.$email;
//$headers = "MIME-Version: 1.0\r\n";
//$headers = "Content-type: text/html\r\n";
//$headers = 'From: index.html' . "\r\n" . 'Reply-To: abhinavkishorem9@gmail.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();
if (mail($toaddress, $subject, $message,$toaddress )) {
    echo "Sent";
} else {
    echo "Failed";
}
}
?>



                                                                                                                                                                                                                                                     
Bottlenecks/Problems: The thing is I put the information in the form, and everytime I get the message "Failed". I have looked for this in Google about this. I thought it might be due to bad request error and tried to look into it in Code Project for solutions from fellow programmers. But this bottleneck/problem still persists. 


What I have tried:

The thing is I put the information in the form, and everytime I get the message "Failed". I have looked for this in Google about this. I thought it might be due to bad request error and tried to look into it in Code Project for solutions from fellow programmers. But this bottleneck/problem still persists.
I used filter_var to sanitize email, message and subject in order to remove any illegal character from these values to remove the failed issue.
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
$message = filter_var($message, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$subject = filter_var($subject, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$from = "From: abhinavkishorem9@gmail.com";
$to='to:'.$email;
Bottlenecks/Problems: It is exactly not showing me whether the data is sanitized or not. It is still showing "Failed".
Posted
Updated 15-Dec-22 18:01pm
v2
Comments
Abhinav Kishore M 15-Dec-22 23:51pm    
I used filter_var to sanitize email, message and subject in order to remove any illegal character from these values to remove the failed issue.
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
$message = filter_var($message, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$subject = filter_var($subject, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$from = "From: abhinavkishorem9@gmail.com";
$to='to:'.$email;
Bottlenecks/Problems: It is exactly not showing me whether the data is sanitized or not. It is still showing “Failed”.

1 solution

Read teh documentation: PHP: mail - Manual[^]
The fourth parameter is optional, and probably should not be the ToAddress repeated.
The other thing to check is the $message line length - the documents say lines must be at most 70 characters - the link contains code to ensure this.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900