2014-12-02 109 views
0

我创建了一个php脚本(用于联系表)发送邮件到我的Gmail帐户。
如果我在标头中使用发件人电子邮件($ headers =“From:”。$ email;),Gmail会将收到的邮件报告为垃圾邮件。
如果我在标头中没有使用电子邮件(例如发件人名称$ headers =“From:”。$ name;),则不会将该邮件报告为垃圾邮件。
你有什么建议让我在标题中使用电子邮件吗?
谢谢!联系表格发送垃圾邮件到Gmail的php脚本

<?php 

/* Check if the url field is empty (antispam) */ 
if ($_POST['leaveblank'] != '' or $_POST['dontchange'] != 'http://') { 
    $name = $_POST['name']; 
    $faillink = "xxx.php"; 
    header("Location: $faillink"); 
} else { 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $subject_prefix = "[ContactForm]: "; 
    $subject = $subject_prefix . $_POST['subject']; 
    $message = $_POST['message']; 
    $to = "[email protected]"; 

    $body = "From: " . $name . "\n"; 
    $body .= "Email: " . $email . "\n"; 
    $body .= "Message: " . $message . "\n"; 

    $headers = "From: " . $email; 

    $oklink = "yyy.php"; 
    $faillink = "xxx.php"; 

    if (preg_match("/[\r\n]/", $name) || preg_match("/[\r\n]/", $email)) { 
     header("Location: $faillink"); 
    } 

    $retmail = mail($to, $subject, $body, $headers); 
    if ($retmail) { 
     header("Location: $oklink"); 
    } else { 
     header("Location: $faillink"); 
    } 
} 

?> 
+0

这是常见的程序。使用该联系表格的人可以选择他喜欢的任何发件人电子邮件。由于GMail无法验证它实际上是该地址的所有者,因此它被标记为垃圾邮件。 – kasoban 2014-12-02 15:11:41

+0

您应该只使用这样的联系表单来发送邮件给自己,不要在乎它是否是垃圾邮件,在这种情况下,您可以在收件箱中设置一个过滤器来接受这些过滤器以绕过垃圾邮件过滤器。 – kasoban 2014-12-02 15:13:25

+1

将** From **地址设置为'noreply @ yourdomain.com',然后将** Reply To设置为'$ email'。 – Iain 2014-12-02 15:23:05

回答

2

我解决了问题,因为Iain建议,所以我更换了邮件标题如下:

$headers = "From: " . "[email protected]" . "\r\n"; 
$headres .= "Reply-To: " . $email . "\r\n"; 
+0

除了在标题中设置发件人地址之外,您还可以像上面所做的那样设置信封发件人地址。有关更多信息,请参阅http://php.net/manual/en/function.mail.php。 – mti2935 2014-12-04 10:50:20