我有这个工作,我不知道我做了什么让它停止。这是我的电子邮件课程:
<?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();
时,它回归真实。那么有人可以帮助我理解这里发生的事情(或者为什么不再发生任何事情,更确切地说)。电子邮件永远不会来。
今天感谢大家的帮助,顺便说一下。
答案 0 :(得分:1)
与核心mail()(您的类所基于的)功能的所有问题一样,有许多变量可能会导致电子邮件无法传递。您的主机可能会限制您可以排队的邮件数量,特别是当php将邮件发送出去时(这取决于您的服务器的配置方式,意味着可以将其作为用户调度:nobody)
此功能经常被滥用,许多共享主机会对其使用施加限制。
您经常遇到SO的最佳建议是使用成熟,完整的邮件类解决方案,如PHPMailer。这将允许您设置标题并执行许多准备步骤,以确保更好的可传递性。
PHPMailer的语法非常类似于你在这里自己动手制作的,所以你可以毫不费力地适应它。它还允许您在更容易的系统中发送附件和HTML格式的电子邮件。
答案 1 :(得分:0)
您是否可以添加一些信息,例如,您最近是否在您的环境中重新编译了某些内容?
如果是这样,我记得PHP 5.x中包含的电子邮件扩展要求在安装过程中可以访问unxi电子邮件二进制文件。
关于错误,可以通过php.ini配置解释。这并不意味着没有警告。
希望我有所帮助。
干杯。
一个。