2010-12-13 5 views
0

Ich bin neu in OOP und könnte etwas Hilfe nutzen. Meine Klasse funktioniert nicht:E-Mail-Klasse PHP

class Email { 

    private $to = '[email protected]'; 

    public $subject; 
    public $body; 

    public function send() { 
    $this->addHeader('From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion() . "\r\n"); 
    $this->addHeader("MIME-Version: 1.0\r\n"); 
    $this->addHeader("Content-Type: text/html; charset=ISO-8859-1\r\n"); 
    $sent = mail($this->to, $this->subject, $this->body, $this->headers); 
    return $sent; 
    } 

    private function addHeader($header) { 
    $this->headers .= $header; 
    } 

} 

Und hier ich es nenne:

$mail = new Email(); 
$mail = new Email; 
$mail->subject($_POST['subject']); 
$mail->body($_POST['body']); 
$mail->send(); 

Ich habe _POST auf die $ getan print_r und die Werte sind. Es gibt keine Probleme mit unserem Mailserver. Ich bin mir also nicht sicher, was ich falsch mache. Ich würde mich über Hilfe freuen. Vielen Dank.

Antwort

4

Ich empfehle die Verwendung PHPMailer, die eine freie und ausgereifte Mailerklasse für PHP ist.

+1

Definitiv eines der besten nutzen wollen - eine Menge Lieferprobleme gelöst, indem helfen Header zu setzen. – DeaconDesperado

3

$ this-> headers ist nicht definiert. Aktivieren Sie Ihre Fehlerberichterstattung.

0

Es gibt keine subject und body Methoden ist. Sie sind Attribute.

$mail->subject = $_POST['subject']; 
$mail->body = $_POST['body']; 

Und natürlich, niemals Daten von $ _POST vertrauen - Sie brauchen eine Art von Flucht.

0
$mail = new Email(); 
$mail->subject = $_POST['subject'=; 
$mail->body = $_POST['body']; 
$mail->send(); 

und wenn Sie die methoted Sie useing dann versuchen, diese

class Email { 

    private $to = '[email protected]'; 

    public $subject; 
    public $body; 

    public function send() { 
    $this->addHeader('From: [email protected]' . "\r\n" . 
      'Reply-To: [email protected]' . "\r\n" . 
         'X-Mailer: PHP/' . phpversion() . "\r\n"); 
    $this->addHeader("MIME-Version: 1.0\r\n"); 
    $this->addHeader("Content-Type: text/html; charset=ISO-8859-1\r\n"); 
    $sent = mail($this->to, $this->subject, $this->body, $this->headers); 
    return $sent; 
    } 

    private function addHeader($header) { 
    $this->headers .= $header; 
    } 


    public function SetSubject($subject) { 
    $this->subject = $subject; 
    } 

    public function SetBody($body) { 
    $this->body= $body; 
    } 

} 

$mail = new Email;  
$mail->SetSubject($_POST['subject']);  
$mail->SetBody($_POST['body']);  
$mail->send(); 
+0

Danke, livetolearn. Zu den anderen, die gepostet haben, versuche ich OOP dabei zu lernen. Ich weiß, schließlich Zend oder phpmailer sind robustere Entscheidungen. – sehummel