为什么通过联系表发送的邮件都会转到垃圾邮箱?我的代码出了什么问题?

时间:2018-05-19 19:33:49

标签: php contact-form

我正在使用以下代码通过我网站的联系表单发送的消息。问题是所有邮件都到达垃圾邮箱。 我怀疑这是因为这部分"From:" . $_POST['email']

您对此问题有何看法?

谢谢,

<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['message']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {

  // detect & prevent header injections
  $test = "/(content-type|bcc:|cc:|to:)/i";
  foreach ( $_POST as $key => $val ) {
    if ( preg_match( $test, $val ) ) {
      exit;
    }
  }

  //send email
 mail( "XYZ****@hotmail.com", "New message from: ".$_POST['name'], $_POST['message']."\nFrom page: ". str_replace("http://", "", $_SERVER['HTTP_REFERER']), "From:" . $_POST['email'] . "\r\n" . "BCC: ABC****@gmail.com" );

}
?>

1 个答案:

答案 0 :(得分:1)

使您的PHP邮件()通过电子邮件减少垃圾邮件 使用标题

$headers .= "Reply-To: The Sender <sender@sender.com>\r\n";
$headers .= "Return-Path: The Sender <sender@sender.com>\r\n";
$headers .= "From: The Sender <senter@sender.com>\r\n";

但标题不仅仅是设置发件人的详细信息。它们对于设置内容类型,电子邮件优先级等也很重要。以下是一些其他标题的外观。

$headers .= "Organization: Sender Organization\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "X-Mailer: PHP". phpversion() ."\r\n"

请务必使用$ headers变量替换第四个参数,如下所示。

mail("recipient@recipient.com", "Message", "A simple message.", $headers);