/*
This might be some useful stuff to send out emails in either text
or html or multipart version, and attach one or more files or even
none to it. Inspired by Kieran's msg above, I thought it might be
useful to have a complete function for doing this, so it can be used
wherever it's needed. Anyway I am not too sure how this script will
behave under Windows.
{br} represent the HTML-tag for line break and should be replaced,
but I did not know how to not get the original tag parsed here.
function SendMail($From, $FromName, $To, $ToName, $Subject, $Text, $Html, $AttmFiles)
$From ... sender mail address like "my@address.com"
$FromName ... sender name like "My Name"
$To ... recipient mail address like "your@address.com"
$ToName ... recipients name like "Your Name"
$Subject ... subject of the mail like "This is my first testmail"
$Text ... text version of the mail
$Html ... html version of the mail
$AttmFiles ... array containing the filenames to attach like array("file1","file2")
$TEXT="This is the first test\n in text format\n.";
$HTML="This is the first test in html format.";
$ATTM=array("/home/myself/test/go.jpg",
"/home/myself/test/SomeDoc.pdf");
SendMail(
"my@address.com","PHP Apache Webmailer", //sender
"your@address.com","Recipients Name", //recipient
"Testmail", //subject
$TEXT,$HTML,$ATTM); //body and attachment(s)
*/
function SendMail($From,$FromName,$To,$ToName,$CC,$Subject,$Text,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","
",$Text)
or die("neither text nor html part present.");
$Text=$Text?$Text:"Sorry, but you need an html mailer to read this mail.";
$From or die("sender address missing");
$To or die("recipient address missing");
$headers ="From: ".$FromName." <".$From.">\n";
if($CC){ $headers .="Cc: $CC\n";}
$headers .="Reply-To: ".$FromName." <".$From.">\n";
$headers .="MIME-Version: 1.0\n";
$headers .="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";
//$headers .= "X-Sender: $FromName <$From>\n";
$headers .="X-Mailer: LLC PHP Mailer\n";
$headers .="X-Priority: 1\n";
$headers .="X-MSMail-Priority: High\n";
$headers .="Return-Path: <$From>\n";
//Messages start with text/html alternatives in OB
$Msg ="This is a multi-part message in MIME format.\n";
$Msg .="\n--".$OB."\n";
$Msg .="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";
//plaintext section
$Msg .="\n--".$IB."\n";
$Msg .="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$Msg .="Content-Transfer-Encoding: quoted-printable\n\n";
// plaintext goes here
$Msg.=$Text."\n\n";
// html section
$Msg .="\n--".$IB."\n";
$Msg .="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
//$Msg .="Content-Transfer-Encoding: quoted-printable\n\n";
$Msg.="Content-Transfer-Encoding: base64\n\n";
// html goes here
//$Msg.=$Html."\n\n";
$Msg.=chunk_split(base64_encode($Html))."\n\n";
// end of IB
$Msg .="\n--".$IB."--\n";
// attachments
if($AttmFiles){
foreach($AttmFiles as $AttmFile){
$patharray = explode ("/", $AttmFile);
$FileName=$patharray[count($patharray)-1];
$Msg .= "\n--".$OB."\n";
$Msg .="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n";
$Msg .="Content-Transfer-Encoding: base64\n";
$Msg .="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n";
//file goes here
$fd=fopen ($AttmFile, "r");
$FileContent=fread($fd,filesize($AttmFile));
fclose ($fd);
$FileContent=chunk_split(base64_encode($FileContent));
$Msg .=$FileContent;
$Msg .="\n\n";
}
}
//message ends
$Msg .="\n--".$OB."--\n";
mail("$ToName <$To>",$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}
?>