SitePoint Sponsor

User Tag List

Results 1 to 2 of 2

Hybrid View

  1. #1
    SitePoint Member urbanedge08's Avatar
    Join Date
    Jul 2008
    Location
    Vancouver, BC Canada
    Posts
    11
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Error in my coding $this header

    I'm having an issue trying to get an email to send. I've narrowed it down to this bit of code but I'm not sure what to do to get the body of the email to send. From what I can tell, with my limited PHP knowledge, the offending code is $this->header .= $this->body;

    I've stripped down the body of the email and still can't get any of it to send. I've read that the MIME code can be very finicky with the servers. These files worked and the email was redirected before I took over and changed servers. I'm not sure what else to look for. Would it be the coding in the body file?

    Code:
    <?
    class eMail
    {
        var $to = array();
        var $cc = array();
        var $bcc = array();
        var $attachment = array();
        var $boundary = "";
        var $header = "";
        var $subject = "";
        var $body = "";
    
        function eMail($name,$mail)
        {
            $this->boundary = md5(uniqid(time()));
            $this->header .= "From: $name <$mail>\n";
        }
    
        function to($mail)
        {
        	$this->to[] = $mail;
        }
    
        function cc($mail)
        {
        	$this->cc[] = $mail;
        }
    
        function bcc($mail)
        {
        	$this->bcc[] = $mail;
        }
    
        function attachment($file)
        {
    		$this->attachment[] = $file;
        }
    
        function subject($subject)
        {
        	$this->subject = $subject;
        }
    
        function text($text)
        {
    	    $this->body = "Content-Type: text/plain; charset=ISO-8859-1\n";
    	    $this->body .= "Content-Transfer-Encoding: 8bit\n\n";
    	    $this->body .= $text."\n";
        }
    
        function html($html)
        {
    	    $this->body = "Content-Type: text/html; charset=ISO-8859-1\n";
    	    //$this->body .= "Content-Transfer-Encoding: quoted-printable\n\n";
    	    //$this->body .= "<html><body>\n".$html."\n</body></html>\n";
    	    $this->body .= "\n".$html."\n\n";
        }
    
    	function send()
        {
            // CC Empfänger hinzufügen
            $max = count($this->cc);
            if($max>0)
            {
                $this->header .= "Cc: ".$this->cc[0];
                for($i=1;$i<$max;$i++)
                {
                    $this->header .= ", ".$this->cc[$i];
                }
                $this->header .= "\n";
            }
            // BCC Empfänger hinzufügen
            $max = count($this->bcc);
            if($max>0)
            {
                $this->header .= "Bcc: ".$this->bcc[0];
                for($i=1;$i<$max;$i++)
                {
                    $this->header .= ", ".$this->bcc[$i];
                }
                $this->header .= "\n";
            }
            
    	    $this->header .= "Content-Type: multipart/mixed;                     boundary=$this->boundary\n\n";
    	    $this->header .= "This is a multi-part message in MIME format\n";
            $this->header .= "--$this->boundary\n";
            $this->header .= $this->body;
            $this->header .= "MIME-Version: 1.0\n";
    
    
            // Attachment hinzufügen
            $max = count($this->attachment);
            if($max>0)
            {
                for($i=0;$i<$max;$i++)
                {
                    $file = fread(fopen($this->attachment[$i], "r"), filesize($this->attachment[$i]));
                    $this->header .= "--".$this->boundary."\n";
                    $this->header .= "Content-Type: application/x-zip-compressed; name=".$this->attachment[$i]."\n";
                    $this->header .= "Content-Transfer-Encoding: base64\n";
                    $this->header .= "Content-Disposition: attachment; filename=".$this->attachment[$i]."\n\n";
                    $this->header .= chunk_split(base64_encode($file))."\n";
                    $file = "";
                }
            }
            $this->header .= "--".$this->boundary."--\n\n";
    
            foreach($this->to as $mail)
            {
                mail($mail,$this->subject,"",$this->header);
                //print("<pre>".$this->header."<pre>");
            }
        }
    }
    ?>

  2. #2
    SitePoint Addict ChiefLee's Avatar
    Join Date
    Apr 2009
    Location
    Lawrence KS
    Posts
    264
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I can't immediately tell what's wrong with your code, but I think you'd be better off using a PHP mailer library rather than reinventing the wheel. I have used SwiftMailer with success (http://swiftmailer.org/) and it provides a simple php interface for sending mail, including multi-part with attachments.
    Add your logo to Pocket Folders.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •