2010-12-13 6 views
0

Je suis nouveau à POO et pourrait utiliser de l'aide. Ma classe ne fonctionne pas:Email classe 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; 
    } 

} 

Et ici je l'appelle:

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

Je l'ai fait sur la print_r $ _POST et les valeurs sont là. Il n'y a pas de problèmes avec notre serveur de messagerie. Donc, je ne suis pas sûr de ce que je fais mal. J'apprécierais de l'aide. Merci.

Répondre

4

Je recommande d'utiliser PHPMailer, qui est une classe mailer libre et mature pour PHP.

+1

Certainement l'un des meilleurs - résolu beaucoup de problèmes de livraison en les aidant à mettre en-têtes. – DeaconDesperado

3

$ this-> les en-têtes ne sont pas définis. Activez votre rapport d'erreurs.

0

Il n'y a pas subject et body méthodes. Ce sont des attributs.

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

Et bien sûr, ne faites jamais confiance aux données de $ _POST - vous avez besoin d'une sorte d'échappement.

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

et si vous voulez utiliser le methoted vous useing alors essayez ce

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

Merci, livetolearn. Pour les autres qui ont posté, j'essaie d'apprendre OOP en faisant cela. Je sais finalement que Zend ou phpmailer sont des choix plus robustes. – sehummel