2010-12-13 11 views
0

私はOOPを新しく使用しています。Emailクラス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; 
    } 

} 

をそしてここで私はそれを呼び出しています:私のクラスが動作していない

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

私は$ _POSTにしますprint_rやったと値が存在します。メールサーバーに問題はありません。だから私は何が間違っているのか分からない。私はいくつかの助けに感謝します。ありがとう。

答えて

4

PHPMailerは、PHPの無料で成熟したメーラークラスです。

+1

間違いなく1つ試行しuseingさmethoted - ヘッダーを設定するために支援することで、配信の問題の多くを解決しました。 – DeaconDesperado

3

$ this->ヘッダーは定義されていません。エラー報告をオンにします。

0

subjectbody方法はありません。それらは属性です。

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

もちろん、$ _POSTのデータは信頼できません。エスケープする必要があります。

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

使用したい場合、あなたは最高のこの

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

ありがとう、livetolearn。投稿した他の人には、私はこれを行う際にOOPを学ぼうとしています。私は最終的にZendやphpmailerがより堅牢な選択肢であることを知っています。 – sehummel