By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,776 Members | 1,506 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,776 IT Pros & Developers. It's quick & easy.

PHP to email (with optional attachements) expert required

P: n/a
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>");
}
Jul 17 '05 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Dave Smithz wrote:
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? whether a string such as 'www.example.com' is displayed as an HTML link
depends on the email client ('reader') not on the email.
(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


i'd recommend using phpMailer, available from
http://phpmailer.sourceforge.net/. does the job. simple to use. what
more could you want?

sadara
Jul 17 '05 #2

P: n/a
"Dave Smithz" <SPAM FREE WORLD> wrote in
news:42********@news1.homechoice.co.uk:

I may have some more but issues but wont confuse for now any comments
appreciated and please see the code below.


take five minutes and tweak this to your exact liking:

http://www.phpclasses.org/browse/package/9.html

it's just amazing.
Jul 17 '05 #3

P: n/a

"Sadara" <sa*********@NOWAYdds.nl> wrote in message
news:42*********************@news.xs4all.nl...
i'd recommend using phpMailer, available from
http://phpmailer.sourceforge.net/. does the job. simple to use. what
more could you want?

What can I say. So far, so d*rn amazing!!!. I was scared off normally by
the fact that you download lots of files and was not familiar with PHP
classes.

Easy when you try (well seems so, so far).

Thanks
Jul 17 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.