And a written multipart mailer...
<?php
//sendmailer test
$message="<html><head></head><body><h3>Foo</h3></body></html>";
$plaintext = "boo";
$to = array("ME" => "me@b.co.uk");
$sent=socketmail("Testing to me", "webmaster@home.com", $to, $subject, $message,$plaintext);
if ($sent==false){echo "There was an error somewhere...";}
function socketmail($fromName, $fromAddress, $toArray, $subject, $message,$plain) {
ini_set("sendmail_from", $fromAddress);
$handle = fsockopen ("127.0.0.1",25, $errno, $errstr, 30) or die("Could not talk to the sendmail server!<br/>$errno<br/>$errstr");
$rcv = fgets($handle, 1024);
echo $rcv."1<br />";
fputs($handle, "HELO {$_SERVER['SERVER_NAME']}\r\n");
$rcv = fgets($handle, 1024);
echo $rcv."2<br />";
while (list($toKey, $toValue) = each($toArray)) {
fputs($handle, "MAIL FROM:$fromAddress\r\n");
$rcv = fgets($handle, 1024);
echo $rcv."3<br />";
if (trim(substr($rcv,0,3))!='250')
{
return false;
exit;
}
fputs($handle, "RCPT TO:$toValue\r\n");
$rcv = fgets($handle, 1024);
echo $rcv."4<br />";
if (trim(substr($rcv,0,3))!='250')
{
return false;
exit;
}
fputs($handle, "DATA\r\n");
$rcv = fgets($handle, 1024);
echo $rcv."5<br />";
if (trim(substr($rcv,0,3))!='354')
{
return false;
exit;
}
fputs($handle, "MIME-Version: 1.0\r\n");
fputs($handle, "Subject: $subject\r\n");
fputs($handle, "From: $fromName <$fromAddress>\r\n");
fputs($handle, "To: $toKey <$toValue>\r\n");
fputs($handle, "Date: ".date('r')."\r\n");
fputs($handle, "X-Sender: <$fromAddress>\r\n");
fputs($handle, "Return-Path: <$fromAddress>\r\n");
fputs($handle, "Errors-To: <$fromAddress>\r\n");
fputs($handle, "X-Mailer: PHP - SocketMail\r\n");
fputs($handle, "X-Priority: 3\r\n");
fputs($handle, "Content-Type: multipart/alternative; boundary=\"NextPart_000_000A_01C3EE3F.867B1730\"\r\n");
fputs($handle, "\r\n");
fputs($handle, "This is a multi-part message in MIME format.\r\n");
fputs($handle, "\r\n");
fputs($handle, "--NextPart_000_000A_01C3EE3F.867B1730\r\n");
fputs($handle, "Content-Type: text/plain;\r\n");
fputs($handle, "charset=\"iso 8859-1\"\r\n");
fputs($handle, "Content-Transfer-Encoding: 7bit\r\n");
fputs($handle, "\r\n");
fputs($handle, chunk_split($plain) . "\r\n");
fputs($handle, "\r\n");
fputs($handle, "--NextPart_000_000A_01C3EE3F.867B1730\r\n");
fputs($handle, "Content-Type: text/html;\r\n");
fputs($handle, "charset=\"iso 8859-1\"\r\n");
fputs($handle, "Content-Transfer-Encoding: quoted-printable\r\n");
fputs($handle, "\r\n");
fputs($handle, chunk_split($message) . "\r\n");
fputs($handle, "\r\n");
fputs($handle, "--NextPart_000_000A_01C3EE3F.867B1730--\r\n");
fputs($handle, "\r\n");
fputs($handle, ".\r\n");
$rcv = fgets($handle, 1024);
echo $rcv;
if (trim(substr($rcv,0,3))=='250')
{
return true;
}
else
{
return false;
}
fputs($handle, "RSET\r\n");
$rcv = fgets($handle, 1024);
}
fputs ($handle, "QUIT\r\n");
$rcv = fgets ($handle, 1024);
//echo("$rcv<br>");
fclose($handle);
ini_restore("sendmail_from");
}
?>
<slightly amended from that in Code Critique...>