电子邮件类PHP停止工作

时间:2010-12-14 23:00:25

标签: php oop

我有这个工作,我不知道我做了什么让它停止。这是我的电子邮件课程:

<?php

    //  File Details: Base mail class

class Email {

    private $to = 'scott@...';
    public $email = NULL;
    public $phone = NULL;
    public $subject = NULL;
    public $body = NULL;
    //private $magic_quotes_active;
//  private $real_escape_string_exists;

    //function __construct() {
        //$this->magic_quotes_active = get_magic_quotes_gpc();
        //$this->real_escape_string_exists = function_exists("mysql_real_escape_string");
    //}

    public function send() {
        $this->addHeader('From: moreinfo@ulsinc.com' . "\r\n" .
                         'Reply-To: moreinfo@ulsinc.com' . "\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");
        $success = mail($this->to, $this->subject, $this->body, $this->headers);
        if ($success) {
            return true;
        } else {
            return false;
        }
    }

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

    public function setName($first, $last) {   
        $this->first = $first;
        $this->last = $last; 
    }

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

    public function setPhone($phone) {   
        $this->phone = $phone; 
    }

    public function setEmail($email) {   
        $this->email = $email; 
    }


    public function setBody($body) {   
        //$this->body = $this->escape_value($body);
        $this->body = $body;
    }

    //public function escape_value($value) {
//      if ($this->real_escape_string_exists) { // PHP 4.3.0 or higher
//          // undo any magic quote effects so mysql_real_escape_string can do the work
//          if ($this->magic_quotes_active) {
//              $value = stripslashes($value);
//          }
//          $value = mysql_real_escape_string($value);
//          
//      } else { // before PHP v.4.3.0
//          //if magic quotes aren't already on then add slashes manually
//          if (!$magic_quotes_active) {
//              $value = addslashes($value);
//          }
//      }
//      
//      return $test; 
//  }

}

$mail = new Email();    
$mail->setSubject($_POST['subject']);    
$mail->setBody($_POST['body']); 
$mail->setName($_POST['first'], $_POST['last']);
$mail->setEmail($_POST['email']);
$mail->setPhone($_POST['phone']);
$mail->send();   


?>

我在这里称之为:

$mail = new Email();
        $mail->setName($_POST['first'], $_POST['last']);
        $mail->setSubject($_POST['subject']);
        $mail->setBody($_POST['body']);
        $mail->setEmail($_POST['email']);
        $mail->setPhone($_POST['phone']);
        $mail->send();

我在脚本的顶部需要一次类,我运行它时不会遇到任何PHP错误。当我回复$mail->send();时,它回归真实。那么有人可以帮助我理解这里发生的事情(或者为什么不再发生任何事情,更确切地说)。电子邮件永远不会来。

今天感谢大家的帮助,顺便说一下。

2 个答案:

答案 0 :(得分:1)

与核心mail()(您的类所基于的)功能的所有问题一样,有许多变量可能会导致电子邮件无法传递。您的主机可能会限制您可以排队的邮件数量,特别是当php将邮件发送出去时(这取决于您的服务器的配置方式,意味着可以将其作为用户调度:nobody)

此功能经常被滥用,许多共享主机会对其使用施加限制。

您经常遇到SO的最佳建议是使用成熟,完整的邮件类解决方案,如PHPMailer。这将允许您设置标题并执行许多准备步骤,以确保更好的可传递性。

PHPMailer的语法非常类似于你在这里自己动手制作的,所以你可以毫不费力地适应它。它还允许您在更容易的系统中发送附件和HTML格式的电子邮件。

答案 1 :(得分:0)

您是否可以添加一些信息,例如,您最近是否在您的环境中重新编译了某些内容?

如果是这样,我记得PHP 5.x中包含的电子邮件扩展要求在安装过程中可以访问unxi电子邮件二进制文件。

关于错误,可以通过php.ini配置解释。这并不意味着没有警告。

希望我有所帮助。

干杯。

一个。