PHP - 不接收来自联系表单的电子邮件

时间:2015-05-28 13:48:09

标签: php contact-form

我没有收到此联系表单上的电子邮件,但邮件似乎发送正常,它还会将我重定向到已发送的页面。 我只能通过FTP访问服务器。

PHP

<?php
$to = 'test@gmail.com';
$subject = $_POST['subject'];
$name = $_POST['name'];
$email = $_POST['email'];
$comment = $_POST['comment'];

$body = <<<EMAIL

<html>

<p><h3>Email Submited From Website.</h3></p>

<p><strong>Name:</strong> $name</p>
<p><strong>Email:</strong> $email</p>
<p><strong>Subject:</strong> $subject</p>
<p><strong>Message:</strong> $comment</p>

</html>

EMAIL;

// To send HTML mail, the Content-type header must be set
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: test email' . "\r\n";
$headers .= 'From: <website@mt.co.uk>' . "\r\n";
//$headers .= 'Cc: noreply@example.com' . "\r\n";
//$headers .= 'Bcc: noreply@example.com' . "\r\n";


if ($_POST['submit']){
mail($to, $subject, $body, $headers);
header ("Location: message-sent.php");
die();
} else {
header ("Location: message-failed.php");
die();
} 
?>

3 个答案:

答案 0 :(得分:0)

检查邮件是否实际发送:

if (mail($to, $subject, $body, $headers)===false) {
    echo "Not sent!";
} else {
    echo "Sent!";
}

答案 1 :(得分:0)

改变这个:

$headers .= 'To: test email' . "\r\n";
$headers .= 'From: <website@mt.co.uk>' . "\r\n";

对此:

$headers .= "To: $to <test email>\r\n"; 
$headers .= "From: website@mt.co.uk <website@mt.co.uk>\r\n";

此外,您需要清理电子邮件的主题和正文以便电子邮件到达,但这通常会在email()报告成功后反映在结果中,在这种情况下,电子邮件会反弹,转到spambox,或者只是被拒绝。

答案 2 :(得分:-1)

如果您的托管服务提供商没有电子邮件服务器,您可以尝试使用免费的电子邮件服务器和phpMailer。 https://github.com/PHPMailer/PHPMailer