How to Send Email With Extra Headers in PHP

Sending email with PHP Is easy—and limited

PHP email with extra headers

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

\r\n
to make sure they work as intended.

Adding Extra Headers in PHP

A simple message with extra headers might look like this:

<?php$to = "recipient@example.com";$subject = "Hi!";$body = "Hi,\n\nHow are you?";$headers = "From: sender@example.com\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 <sender@example.com>";$to = "Richard Recipient <recipient@example.com>";$subject = "Hi!"; $xmailer: "php"$body = "Hi,\n\nHow are you?";$host = "ssl://mail.example.com";$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://mail.example.com"; $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>");  }?>