You are here: Re: Help with mail() - message not displaying « PHP Programming Language « IT news, forums, messages
Re: Help with mail() - message not displaying

Posted by Tom on 11/29/06 19:56

uncomment the last line:

//print("<pre>$msg</pre>");

Also, unless you have other reasons for writing your own code here, you
might check out something phpmailer. It may help save you from
reinventing the wheel.

Tom


Karl Groves wrote:
> I'm trying to work out a mail system which can send an attachment as well
> as an HTML formatted message (and a default plain text version).
>
> I found some pretty good code on PHP.net and modified it a little but I
> can't seem to get it to work.
>
> It attaches the file properly, but only displays the Plain Text message,
> even in an HTML-capable mail client.
>
> I'm guessing it has something to do with the placement of the boundaries,
> but I can't figure it out.
>
> TIA
>
>
> <?php
>
> // Is the OS Windows or Mac or Linux
> if (strtoupper(substr(PHP_OS,0,3) == 'WIN')) {
> $eol = "\r\n";
> } elseif (strtoupper(substr(PHP_OS,0,3) == 'MAC')) {
> $eol = "\r";
> } else {
> $eol = "\n";
> }
>
>
> // Set Up Message Details
> $recipient = "foo@bar.com";
> $subject = "E-mail Message ".date("Y/m/d H:i:s");
> $from_name = "Mr. Foo Bar";
> $from_email = "foo@bar.com";
> $text_msg = $eol."TEXT MESSAGE BODY".$eol; // plain text version of the
> message
> $html_msg = $eol."<html><body><strong>HTML MESSAGE BODY</strong></body>
> </html>".$eol; // teh HTML goodness
>
> // File for Attachment
> $file_name = "file.gif"; // name of the file being attached
> $f_name = $path.$file_name; // path + name of the file being attached
> $handle = fopen($f_name, 'rb');
> $f_contents = fread($handle, filesize($f_name));
> $f_contents = chunk_split(base64_encode($f_contents));
> $f_type = filetype($f_name);
> fclose($handle);
>
>
> // Headers
> $headers = "";
> $headers .= "From: $from_name <$from_email>".$eol;
> $headers .= "Reply-To: $from_name <$from_email>".$eol;
> $headers .= "Return-Path: $from_name <$from_email>".$eol;
> $headers .= "X-Sender: <$from_email>".$eol;
> $headers .= "Errors-To: <$from_email>".$eol;
> $headers .= "Message-ID: <".md5(uniqid(rand())).".".preg_replace("/[^a-z0-
> 9]/i", "", $from_name).">".$eol;
> $headers .= "X-Mailer: PHP v".phpversion().$eol;
> $headers .= "X-Priority: 3\n";
>
> // Boundary for marking the split & Multitype Headers
> $mime_boundary = "php-".md5(rand());
> $headers .= "MIME-Version: 1.0".$eol;
> $headers .= "Content-Type: multipart/mixed; boundary=\"".
> $mime_boundary."\"".$eol;
> $msg = "";
>
> // Attachment
> $msg .= "--".$mime_boundary.$eol;
> $msg .= "Content-Type: $f_type; name=\"".$file_name."\"".$eol;
> $msg .= "Content-Transfer-Encoding: base64".$eol;
> $msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".
> $eol.$eol;
> $msg .= $f_contents.$eol.$eol;
> $msg .= "--".$mime_boundary.$eol;
>
>
> // Text Version
> $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
> $msg .= "Content-Transfer-Encoding: 8bit".$eol;
> $msg .= "This is a multi-part message in MIME format.".$eol;
> $msg .= "If you are reading this, please update your email-reading-
> software.".$eol;
> $msg .= $text_msg;
> $msg .= "--".$mime_boundary.$eol;
>
> // HTML Version
> $htmlalt_mime_boundary = $mime_boundary."_htmlalt";
> $msg .= "Content-Type: multipart/alternative; boundary=\"".
> $htmlalt_mime_boundary."\"".$eol;
> $msg .= "--".$htmlalt_mime_boundary.$eol.$eol;
> $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
> $msg .= "Content-Transfer-Encoding: 8bit".$eol;
> $msg .= $html_msg;
> $msg .= $eol.$eol."--".$htmlalt_mime_boundary."--".$eol.$eol;
>
> // Finish Message
> $msg .= "--".$mime_boundary."--".$eol.$eol;
>
> // SEND THE EMAIL
> ini_set(sendmail_from, $from_email); // the INI lines are to force the
> From Address to be used !
> mail($recipient, $subject, $msg, $headers);
> ini_restore(sendmail_from);
>
> // DEBUG STUFF
> //print("<pre>$msg</pre>");
> ?>
>
>
> --
> Karl Groves
> www.karlcore.com

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация