Hi there,
Previously in my PHP code I was using Sendmail to send out emails to people
in the MySQL DB. The requirement cam along to be able to send attachments
and so I dug around for an easy bit of code that did not need classes and I
could plug easily into my PHP code.
I thought I found one (see bottom of email), however I have since discovered
that as it is, this script has the following disadvantages when compared to
using Sendmail as I used to:
1. Sendmail sent out plaintext emails however if there was text that was
like
www.example.com then the code would still appear as a link in many
plain text readers. This does not seem to happen when sent using the below
script. Anyone understand why?
(Note: I use the $Text parameter rather then the $HTML one because I need to
assume customers will only have plain text email readers. I also did try
putting the body of the email into both Text and HTML but I ended up
receiving the email twice with the HTML version losing many carriage returns
etc.).
2. With send mail if the delivery address did not exist, we would get an
email bounce back. This does not seem to happen with below despite my
tweaking attempts. Anyone know why this would be?
I may have some more but issues but wont confuse for now any comments
appreciated and please see the code below.
Thanks
*******Custom - insertable sendmail code - very handy if I could fully get
it to work the way I want it to*****
function
SendMail($From,$FromName,$To,$ToName,$Subject,$Tex t,$Html,$AttmFiles){
$OB="----=_OuterBoundary_000";
$IB="----=_InnerBoundery_001";
$Html=$Html?$Html:preg_replace("/\n/","<br>",$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 ="MIME-Version: 1.0\r\n";
$headers.="From: ".$FromName." <".$From.">\n";
$headers.="To: ".$ToName." <".$To.">\n";
#$headers.="To: ".$To."\n";
#$headers.="Reply-To: ".$FromName." <".$From.">\n";
#Prioriry 3 = normal 1 = high - apparently s- shouldlook more into thi
#$headers.="X-Priority: 1\n";
#$headers.="X-MSMail-Priority: High\n";
#$headers.="X-MSMail-Priority: Normal\n";
$headers.="X-Mailer: My PHP Mailer\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\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: base64\n\n";
// html goes here
$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($FileConten t));
$Msg.=$FileContent;
$Msg.="\n\n";
}
}
//message ends
$Msg.="\n--".$OB."--\n";
#mail($To,$Subject,$Msg,$headers);
mail("",$Subject,$Msg,$headers);
//syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");
}