PHP to email (with optional attachements) expert required

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

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 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

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.


*******Custom - insertable sendmail code - very handy if I could fully get
it to work the way I want it to*****

  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.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";

 //plaintext section
  $Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
  // plaintext goes here

 // html section
  $Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
  $Msg.="Content-Transfer-Encoding: base64\n\n";
  // html goes here

 // end of IB

 // attachments
   foreach($AttmFiles as $AttmFile){
    $patharray = explode ("/", $AttmFile);
    $Msg.= "\n--".$OB."\n";
    $Msg.="Content-Transfer-Encoding: base64\n";

   //file goes here
    $fd=fopen ($AttmFile, "r");
    fclose ($fd);

 //message ends
 //syslog(LOG_INFO,"Mail: Message sent to $ToName <$To>");

Re: PHP to email (with optional attachements) expert required

"Dave Smithz" <SPAM FREE WORLD> wrote in

Quoted text here. Click to load it

take five minutes and tweak this to your exact liking:

it's just amazing.

Re: PHP to email (with optional attachements) expert required

Dave Smithz wrote:
Quoted text here. Click to load it
whether a string such as '' is displayed as an HTML link
depends on the email client ('reader') not on the email.

Quoted text here. Click to load it

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


Re: PHP to email (with optional attachements) expert required

Quoted text here. Click to load it

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

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


Site Timeline