Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP E-mail Form Sender Name Instead Of E-mail?

Tags:

Right now, I've set up a PHP e-mail form and everything works fine. However, while testing it, I'm only getting the sender e-mail address as the name. What I want is the name of the sender, like:

John Doe

Subject Subject Subject

Instead of:

[email protected]

Subject Subject Subject

Below is the code...

Can someone help me please? Thanks.

PHP:

<?php if(isset($_POST['email'])) {      // EDIT THE 2 LINES BELOW AS REQUIRED     $email_to = "[email protected]";     $email_subject = $_REQUEST['subject'];       function died($error) {         // your error code can go here         echo "We are very sorry, but there were error(s) found with the form you submitted. ";         echo "These errors appear below.<br /><br />";         echo $error."<br /><br />";         echo "Please go back and fix these errors.<br /><br />";         die();     }      // validation expected data exists     if(!isset($_POST['full_name']) ||         !isset($_POST['email']) ||         !isset($_POST['subject']) ||         !isset($_POST['message'])) {         died('We are sorry, but there appears to be a problem with the form you submitted.');           }      $full_name = $_POST['full_name']; // required     $email_from = $_POST['email']; // required     $subject = $_POST['subject'];     $message= $_POST['message']; // required      $error_message = "";     $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';   if(!preg_match($email_exp,$email_from)) {     $error_message .= 'The e-mail you entered does not appear to be valid.<br />';   }     $string_exp = "/^[A-Za-z .'-]+$/";   if(!preg_match($string_exp,$full_name)) {     $error_message .= 'The name you entered does not appear to be valid.<br />';   }   if(strlen($message) < 2) {     $error_message .= 'The message you entered doee not appear to be valid.<br />';   }   if(strlen($error_message) > 0) {     died($error_message);   }     $email_message = "Form details below.\n\n";      function clean_string($string) {       $bad = array("content-type","bcc:","to:","cc:","href");       return str_replace($bad,"",$string);     }      $email_message .= "Full Name: ".clean_string($full_name)."\n";     $email_message .= "E-mail: ".clean_string($email_from)."\n";     $email_message .= "Subject: ".clean_string($subject)."\n";     $email_message .= "Message: ".clean_string($message)."\n";   // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers);  ?>  <!-- include your own success html here -->  Thank you for contacting us. We will be in touch with you very soon.  <?php } ?> 
like image 588
DearRicky Avatar asked Jul 18 '11 03:07

DearRicky


People also ask

How do I set the name of an email sender via PHP?

Just add the -f parameter to provide the sender's email and -F parameter to provide the sender's name to the mail(), all as a string. Assuming that you are using sendmail on a Linux machine: You can find more detailed information by typing "man sendmail" in your shell.

How do I fix PHP email?

If it's still not working: change the sender ($sender) to a local email (use the same email as used for recipient). Upload the modified php file and retry. Contact your provider if it still does not work. Tell your provider that the standard php "mail()" function returns TRUE, but not mail will be sent.

How does PHP mail send email?

PHP makes use of mail() function to send an email. This function requires three mandatory arguments that specify the recipient's email address, the subject of the the message and the actual message additionally there are other two optional parameters. mail( to, subject, message, headers, parameters );

Does PHP mail need SMTP?

On a *nix machine, the PHP mail() function does not support SMTP, but instead uses the sendmail() or other configured mail script on the server. This script can send through an SMTP, but this isn't the easiest way within PHP (unless you already have the script). To use SMTP, I would recommend PHPMailer.


1 Answers

Right after your 4 lines that say $email_message .= ... add a line:

$email_from = $full_name.'<'.$email_from.'>'; 
like image 196
Paul Avatar answered Dec 15 '22 13:12

Paul