<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: yoursite.com';
    $to = 'contact@yoursite.com';
    $subject = 'Customer Inquiry';
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from)) {
            echo '<p>Your message has been sent!</p>';
        } else {
            echo '<p>Something went wrong, go back and try again!</p>';
        }
    }
?>

我试着创建了一个简单的邮件表单。表单本身在我的index.html页面上,但它提交到一个单独的“感谢您的提交”页面thanks . PHP,其中嵌入了上述PHP代码。 代码完美地提交,但从未发送电子邮件。我该如何解决这个问题?


当前回答

确保在服务器中安装了Sendmail。

如果您已经检查了代码并验证了那里没有任何错误,那么转到/var/mail并检查该文件夹是否为空。

如果是空的,你需要做:

sudo apt-get install sendmail

如果你在Ubuntu服务器上。

其他回答

只需在发送邮件之前添加一些标题:

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: yoursite.com'; 
$to = 'contact@yoursite.com'; 
$subject = 'Customer Inquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html\r\n";
$headers .= 'From: from@example.com' . "\r\n" .
'Reply-To: reply@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

还有一件事。mail()函数在本地主机中不起作用。将代码上传到服务器并尝试。

我在000webhost上做了以下工作:

$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: ". $from. "\r\n";
$headers .= "Reply-To: ". $from. "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();
$headers .= "X-Priority: 1" . "\r\n";

发送邮件时直接输入邮箱地址:

mail('email@gmail.com', $subject, $message, $headers)

使用“and not”。

这个代码工作,但电子邮件收到了半小时的延迟。

您可以使用CodeIgniter配置电子邮件。例如,使用SMTP(简单方式):

$config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'mail.domain.com', // Your SMTP host
        'smtp_port' => 26, // Default port for SMTP
        'smtp_user' => 'name@domain.com',
        'smtp_pass' => 'password',
        'mailtype' => 'html',
        'charset' => 'iso-8859-1',
        'wordwrap' => TRUE
);
$message = 'Your msg';
$this->load->library('email', $config);
$this->email->from('name@domain.com', 'Title');
$this->email->to('emaildestination@domain.com');
$this->email->subject('Header');
$this->email->message($message);

if($this->email->send()) 
{
   // Conditional true
}

这对我很管用!

有几种可能性:

您正面临服务器问题。服务器上没有邮件服务器。所以你的邮件不能工作,因为你的代码是好的,邮件是有类型的。 您没有得到发布的值。尝试使用静态值的代码。 使用SMTP邮件发送邮件…

这只会影响一小部分用户,但我希望为这一小部分用户记录它。由于这个问题,这个成员花了6个小时对一个正常工作的PHP邮件脚本进行故障排除。

如果你要去一所从www.AceITLab.com运行XAMPP的大学,你应该知道我们的教授没有告诉我们的事情:AceITLab防火墙(不是Windows防火墙)在XAMPP中阻止MercuryMail。你必须使用另一种邮件客户端,pear为我们工作。你必须发送到一个低安全设置的Gmail帐户。

是的,我知道,这在现实世界的电子邮件中完全没有用。然而,据我所知,学术环境和现实世界往往没有什么宝贵的共同点。