Hi all
I've got a script that sends mail. It works fine on my Windows XP machine, but when uploading to the Unix server, my HTML messages are sent as plain text, and reply-to is not set. So I guess somehow my headers are going missing. Here's the script:
Code: Select all
<?php
class Email {
// Member variables
private $to = '';
private $subject = '';
private $headers = '';
private $message = '';
/**
* Constructor
* @return Email
*/
function Email() {
}
/**
* Sends an email according to $_POST variables set.
*/
public function send(){
require_once 'config.php';
require_once 'parser.php';
// Check parameters first
if(!$this->checkParams()){
echo 'Unable to send email! Some required parameters are missing.';
return false;
}
// Setup recipients
$this->to = $config['email'];
// Setup email subject
$this->subject = $_POST['subject'];
// Setup and parse message
$parser = new Parser();
$data = array(
'name' => $_POST['name'],
'email' => $_POST['email'],
'subject' => $_POST['subject'],
'message' => $_POST['message']
);
$this->message = $parser->parse($config['email_template'], $data);
// Set Content-Type header for HTML email
$this->headers = 'MIME-Version: 1.0' . "\r\n";
$this->headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Setup additional headers
$this->headers .= 'From: ' . $_POST['name'] . '<' . $_POST['email'] . '>' . "\r\n";
// Send the email, returning its result
if(mail($this->to, $this->subject, $this->message, $this->headers))
echo 'Email successfully sent!';
else
echo 'Unable to send email!';
}
/**
* Checks that the required $_POST parameters are set.
* @return true - $_POSTs are valid. false - Some posts are invalid or have not been set.
*/
private function checkParams(){
if(!isset($_POST['name']) || !isset($_POST['email']) || !isset($_POST['subject'])|| !isset($_POST['message']))
return false;
return true;
}
}
?>~pickle | Please use [ code=html ], [ code=php ], etc tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read: