Information fields missing in body of email

the mail() function

Moderators: egami, macek, gesf

Post Reply
AlexHattingh
New php-forum User
New php-forum User
Posts: 1
Joined: Sun Aug 06, 2017 2:45 am

Sun Aug 06, 2017 3:07 am

Good day,

I am hoping that someone with eagle eyes can tell why this phpscript, with attachment, only includes text entered into the "message" field, and no other information.

To clarify, I DO receive an email from my website, and the attachment is included, but I don't see the SENDER NAME, SENDER EMAIL in the body of the message, I only see anything that has been written in the MESSAGE field. Can you tell what I need to add, and where I need to add it to, to make sure that the information from every field in my form is included in the body of the email?

Many thanks,
Alex

<?php

if($_POST && isset($_FILES['my_file']))
{

$from_email = 'noreply@your_domain.com'; //from mail, it is mandatory with some hosts
$recipient_email = 'me@myemail.co.za'; //recipient email (most cases it is your personal email)

//Capture POST data from HTML form and Sanitize them,

$sender_name = filter_var($_POST["sender_name"], FILTER_SANITIZE_STRING); //sender name
$reply_to_email = filter_var($_POST["sender_email"], FILTER_SANITIZE_STRING); //sender email used in "reply-to" header
$subject = filter_var($_POST["subject"], FILTER_SANITIZE_STRING); //get subject from HTML form
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING); //message

/* //don't forget to validate empty fields
if(strlen($sender_name)<1){
die('Name is too short or empty!');
}
*/

//Get uploaded file data
$file_tmp_name = $_FILES['my_file']['tmp_name'];
$file_name = $_FILES['my_file']['name'];
$file_size = $_FILES['my_file']['size'];
$file_type = $_FILES['my_file']['type'];
$file_error = $_FILES['my_file']['error'];

if($file_error > 0)
{
die('Upload error or No files uploaded');
}
//read from the uploaded file & base64_encode content for the mail
$handle = fopen($file_tmp_name, "r");
$content = fread($handle, $file_size);
fclose($handle);
$encoded_content = chunk_split(base64_encode($content));

$boundary = md5("sanwebe");
//header
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From:".$from_email."\r\n";
$headers .= "Reply-To: ".$reply_to_email."" . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary = $boundary\r\n\r\n";

//plain text
$body = "--$boundary\r\n";
$body .= "Content-Type: text/plain; charset=ISO-8859-1\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= chunk_split(base64_encode($message));

//attachment
$body .= "--$boundary\r\n";
$body .="Content-Type: $file_type; name=".$file_name."\r\n";
$body .="Content-Disposition: attachment; filename=".$file_name."\r\n";
$body .="Content-Transfer-Encoding: base64\r\n";
$body .="X-Attachment-Id: ".rand(1000,99999)."\r\n\r\n";
$body .= $encoded_content;

$sentMail = mail($recipient_email, $subject, $body, $headers);
if($sentMail) //output success or failure messages
{
die('Thank you for your email');
}else{
die('Could not send mail! Please check your PHP mail configuration.');
}

}
?>

Post Reply
  • Information
  • Who is online

    Users browsing this forum: No registered users and 1 guest