How to Send Email With Extra Headers in PHP

Sending email with PHP Is easy—and limited

Various PHP codes

 maciek905/Getty Images

Sending emails with PHP is simple; all you need is a function and three arguments. That's not all there is to normal email messages, however. Any look closer than a mere glance will reveal that this use of PHP email lacks some basic functions. For example, it doesn't set the  From: header line. In keeping with PHP's reputation for ease of use, however, that's a quick fix: Just add another argument to specify extra headers such as X-Mailer, Cc:, and, of course, From:.

Note: If you specify more than one extra header, make sure you separate the header lines with


to make sure they work as intended.

Adding Extra Headers in PHP

A simple message with extra headers might look like this:

<?php$to = "";$subject = "Hi!";$body = "Hi,\n\nHow are you?";$headers = "From:\r\n". "X-Mailer: php";if (mail($to, $subject, $body, $headers)) {   echo("<p>Message sent!</p>");  }else {echo("<p>Message delivery failed...</p>");  }?>

PHP Email With Extra Headers Using PEAR Mail

You also can insert extra headers when using PEAR Mail to send email, of course:

<?phprequire_once "Mail.php";$from = "Stephanie Sender <>";$to = "Richard Recipient <>";$subject = "Hi!"; $xmailer: "php"$body = "Hi,\n\nHow are you?";$host = "ssl://";$port = "465";$username = "smtp_username";$password = "smtp_password";$headers = array ('From' =>$from, 'To' =>$to, 'Subject' =>$subject, 'X-Mailer' =>$xmailer);$smtp = Mail::factory('smtp', array ('host' =>$host, 'port' =>$port, 'auth' => true, 'username' =>$username, 'password' =>$password));$mail = $smtp->send($to,$headers,$body);if (PEAR::isError($mail)) {echo("<p>". $mail->getMessage(). "</p>");  }else {echo("<p>Message successfully sent!</p>");  }?>$subject = "Hi!";$xmailer: "php"$body = "Hi,\n\nHow are you?";$host = "ssl://"; $port = "465";$username = "smtp_username";$password = "smtp_password";$headers = array ('From' =>$from, 'To' =>$to, 'Subject' =>$subject, 'X-Mailer' => $xmailer);$smtp = Mail::factory('smtp',   array ('host' =>$host, 'port' =>$port, 'auth' => true, 'username' =>$username, 'password' =>$password));$mail =$smtp->send($to,$headers,$body);if (PEAR::isError($mail)) {echo("<p>" .$mail->getMessage() . "</p>");  }else {   echo("<p>Message successfully sent!</p>");  }?>
Was this page helpful?