Manjot Singh
Manjot Singh

Reputation: 3

my variable is not echoing <br> tag when it gets to the mail function

I am creating my own contact form and sending all the inputs through variable to the mail function

But there is one error in it......my code is like this in the below...

$from = $_POST["from"];
 // sender

$name = $_POST["name"];
$subject = $_POST["subject"];
$message = $_POST["message"];

// message lines should not exceed 70 characters (PHP rule), so wrap it
$message = wordwrap($message, 70);

$phone = $_POST["phone"];
$mytour = $_POST["select1"];
$howmany = $_POST["select2"];
$arrival = $_POST["arrival"];
$departure = $_POST["departure"];
$accommodation = $_POST["select3"];
$company = $_POST["company"];

// send mail
$messagecontent = "Name:$name , " . "Email:$from ," . "Nature of Enquiry:$subject ," . "Message:$message ," . "Phone No:$phone, " . "My Tour Wish List: $mytour, " . "How many days do you have available:$howmany, " . "Arrival Date:$arrival ," . "Departure Date:$departure ," . "My Preferred Accommodation:$accommodation, " . "Company Name:$company ,";

// $messagewithbreak=str_replace(',',', <br/>;',$messagecontent); // code replaces all your commas with , and a <br> tag

mail("[email protected]", " Contact form Filled", "$messagewithbreak", "From: $from\n");
echo "Thank you for sending us feedback";
}

But when I receive it in the my email...there is not break tag <br> tag...and it receives as....

Name: , Email:[email protected] ,Nature of Enquiry:none ,Message:none ,Phone No:none,My Tour Wish List: Heritage Tour of Kells,How many days do you have available:Half a Day, Arrival Date:2014-09-10 ,Departure Date:2014-09-10 ,My Preferred Accommodation:Hostel,Company Name:none

But I want it to view proper in the email.... as that is not the professional way... to see the email moreover it is difficult to read the email like this.....

what should I do please help me on it....

I will really appreciate your help.

Please answer my question nothing is helping me out here.I have tried..the methods given to me by jenz and rakesh but still the form when receive in the email shows as the paragraph without line breaks....it is getting frustrating

Upvotes: 0

Views: 1131

Answers (4)

WordpressCoder
WordpressCoder

Reputation: 303

// send mail
$messagecontent = "Name:$name \n ";
$messagecontent.= "Email:$from \n";
$messagecontent.= "Nature of Enquiry:$subject \n";
............
...............

Set all the variables like that.

Upvotes: 0

Jenz
Jenz

Reputation: 8369

Properly add formatting to your message. Any HTML tags placed inside double quotes will be converted to the tag when you echo it. So you just need to add <br> in proper places inside the message content. Also all PHP variables inside double quotes will get replaced by its value. So no need of appending each string with double quotes.

$messagecontent="Name:$name <br> Email:$from <br>Nature of Enquiry:$subject 
<br>Message:$message<br>Phone No:$phone<br>
My Tour Wish List: $mytour<br>How many days do you have available:$howmany<br> Arrival Date:$arrival <br> Departure Date:$departure <br> My Preferred 
Accommodation:$accommodation<br>Company Name:$company ";

To send HTML email you have to add headers which is optional by default where we pass Content-Type type declaration telling mail services that parse this email as HTML.

  $headers = "From: " . strip_tags($from) . "\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

and pass $headers in mail() like,

mail("[email protected]", " Contact form Filled", $messagecontent, $headers);

Upvotes: 1

Jody
Jody

Reputation: 1743

You are trying to use HTML in a plain text email. If all you want to do is have line breaks, then use \n instead of the br tag.

If you want to use HTML in an email you must add a content-type header. See the PHP mail docs for an example.

Upvotes: 0

Rakesh Sharma
Rakesh Sharma

Reputation: 13728

why you concat message string again and again. Also remove double quotes from variables in mail()

$messagecontent="Name:$name , Email:$from , Nature of Enquiry:$subject , Message:$message , Phone No:$phone, My Tour Wish List: $mytour, How many days do you have available:$howmany, Arrival Date:$arrival , Departure Date:$departure , My Preferred Accommodation:$accommodation, Company Name:$company ,";
$messagewithbreak=str_replace(',',',<br>',$messagecontent);
mail("[email protected]"," Contact form Filled", $messagewithbreak, $from);

Upvotes: 1

Related Questions