PHP未知发件人

4

你好,我对PHP还比较陌生,目前了解不多。我修改了一个联系表单,但遇到了邮件直接进入垃圾箱的问题。

我猜测这是因为邮件头中一直显示着“未知发件人”的原因。如果有人能帮我纠正这个问题,我将不胜感激。以下是我在网站中实现的代码:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Wirral PT Enquiry'; 
$to = 'joebloggs@hotmail.com'; 
$subject = 'Wirral PT Enquiry';
$human = $_POST['human'];
$headers = "enquiry@wirralpt.co.uk";
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '2') {                 
            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>'; 
            } 
        } else if ($_POST['submit'] && $human != '4') {
            echo '<p> 1+1=2!! </p>';
        }
    } else {
        echo '<p>You need to fill everything!!</p>';
    }
} 
?>

1
根据SMTP服务器的不同,From:头应包含电子邮件,例如:From: Wirral PT Enquiry <something@somewhere.com>。您至少应尝试使用From: something@somewhere.com,并查看SMTP服务器是否以某种方式覆盖了您的From:头。 - NullUserException
4个回答

5

$from = 'From: Wirral PT Enquiry'; 应该包含发件人的电子邮件地址,而不仅仅是姓名:

 $from = 'From: Wirral PT Enquiry <enquiry@wirralpt.co.uk>'; 

你试一下吗?


我认为电子邮件地址被编辑器误认为是标签而被吞掉了。 - Ashley Sheridan
已解决 :) 但下面的答案更完整 - MyStream

1

请将您的标题更改为以下内容:

$headers = 'From: enquiry@wirralpt.co.uk' . "\r\n" .
    'Reply-To: enquiry@wirralpt.co.uk' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

你的邮件应该是这样的:

mail ($to, $subject, $body, $headers)

1

尝试使用

$headers = "Reply To :enquiry@wirralpt.co.uk";

可能适合你

此外,

$headers = "From :enquiry@wirralpt.co.uk";

请使用您相关的电子邮件 ID 尝试这两个选项


问题在于没有使用headers - 更新$from,它应该可以工作了。 - MyStream

-2

如果在使用PhpMailer的SMTP设置时,遗漏了$mail->IsSMTP();,也会导致此错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接