Re: Help Sending Mail

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2007-12-10 at 21:05 -0800, Jim Lucas wrote:
> Robert Cummings wrote:
> > On Tue, 2007-12-11 at 06:33 +0200, Me2resh Lists wrote:
> >> Dear All,
> >>
> >> i wrote this class below to send Mail. but when i use it. i get the sender
> >> No Body. and from the address of the server, not the From address that i
> >> specify. and the MIME Headers as text in the message itself. and the
> >> attachment is pasted as binary text also.
> >> can anyone help please ??
> >>
> >> here is the code :
> >> --------------------------------------------------------------------
> >> <?php
> >>
> >> $Mail = new MainClass();
> >>
> >> $Mail->Construct("Ahmed", "me2resh.lists@xxxxxxxxx", "Test Mail", "Hello,
> >> this is my first message");
> >> $Mail->AddTo("ahmed@xxxxxxxxxxxxxxxxxxxxx", "Ahmed");
> >> $Mail->AddCc("me2resh@xxxxxxx", "Me2resh");
> >> $Mail->AddBcc("ahmed@xxxxxxxxxxxxxxxxxxxx", "hola");
> >> $Mail->AddAttach("favicon.ico");
> >> $Mail->SendMail();
> >>
> >> echo "<pre>";
> >> print_r($Mail);
> >>
> >> /**
> >>  *
> >>  */
> >> class MainClass{
> >>
> >>     /**
> >>      *
> >>      */
> >>
> >>     var $To = "";
> >>     var $Cc = "";
> >>     var $Bcc = "";
> >>     var $From = "";
> >>     var $Name = "";
> >>     var $Subject = "";
> >>     var $Message = "";
> >>     var $Headers = "";
> >>
> >>     function Construct($name, $from, $subject, $message){
> >>         //construct message
> >>         if ($name == ""){
> >>             $name = $from;
> >>         }
> >>         $this->Name = $name;
> >>         $this->From = $from;
> >>         $this->Subject = $subject;
> >>         $this->Message = $message;
> >>     }//end of Construct
> >>
> >>
> >>     function AddTo($email, $name){
> >>     // add reciepnt to To array
> >>         if ($name == ""){
> >>             $name = $email;
> >>         }
> >>         if ($this->To == ""){
> >>             $this->To .= $name.' <'.$email.'>';
> >>         }else{
> >>             $this->To .= ",".$name.' <'.$email.'>';
> >>         }
> >>     }// end of AddTo
> >>
> >>
> >>     function AddCc($email, $name){
> >>     // add reciepnt to Cc array
> >>     if ($name == ""){
> >>             $name = $email;
> >>         }
> >>         if ($this->Cc == ""){
> >>             $this->Cc .= $name.' <'.$email.'>';
> >>         }else{
> >>             $this->Cc .= ",".$name.' <'.$email.'>';
> >>         }
> >>     }
> >>
> >>
> >>     function AddBcc($email, $name){
> >>     // add reciepnt to Bcc array
> >>     if ($name == ""){
> >>             $name = $email;
> >>         }
> >>         if ($this->Bcc == ""){
> >>             $this->Bcc .= $name.' <'.$email.'>';
> >>         }else{
> >>             $this->Bcc .= ",".$name.' <'.$email.'>';
> >>         }
> >>     }
> >>
> >>     function AddAttach($attach){
> >>     //add attach to array
> >>         //if (is_uploaded_file($attach)) {
> >>              // Read the file to be attached ('rb' = read binary)
> >>              $file = fopen($attach,'rb');
> >>              $data = fread($file,filesize($attach));
> >>              fclose($file);
> >>
> >>             // Generate a boundary string
> >>             $semi_rand = md5(time());
> >>             $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
> >>
> >>             // Add the headers for a file attachment
> >>             $this->Headers .= "\nMIME-Version: 1.0\n" .
> >>                         "Content-Type: multipart/mixed;\n" .
> >>                         " boundary=\"{$mime_boundary}\"";
> >>
> >>             // Add a multipart boundary above the plain message
> >>             $this->Message = "This is a multi-part message in MIME
> >> format.\n\n" .
> >>                        "--{$mime_boundary}\n" .
> >>                        "Content-Type: text/plain; charset=\"iso-8859-1\"\n"
> >> .
> >>                        "Content-Transfer-Encoding: 7bit\n\n" .
> >>                        $this->Message . "\n\n";
> >>             // Base64 encode the file data
> >>              $data = chunk_split(base64_encode($data));
> >>               // Add file attachment to the message
> >>             $this->Message .= "--{$mime_boundary}\n" .
> >>                         "Content-Type: {filetype($attach)};\n" .
> >>                         " name=\"{$attach}\"\n" .
> >>                         "Content-Disposition: attachment;\n" .
> >>                         " filename=\"{$attach}\"\n" .
> >>                         "Content-Transfer-Encoding: base64\n\n" .
> >>                         $data . "\n\n" .
> >>                         "--{$mime_boundary}--\n";
> >>                      //   }// end of if
> >>
> >>     }// end of add attach
> >>
> >>     function SendMail(){
> >>         $this->Headers .= "\r\n";
> > 
> > The last line above is your problem. Remove it.
> 
> Partly, check the $this->Headers .= ... part in the AddAttach method

Yeah, he's all over the place with his line endings. Personally, I use
an array to track the headers and use implode in one shot before
sending.

Cheers,
Rob.
-- 
...........................................................
SwarmBuy.com - http://www.swarmbuy.com

    Leveraging the buying power of the masses!
...........................................................

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux