使用此PHP代码,电子邮件不会进入Gmail收件箱

时间:2016-10-10 06:30:21

标签: php html email gmail contact-form

我在html网站上使用此代码作为联系表单,但Gmail收件箱中没有邮件。

任何人都可以帮助我,我正在尝试解决这个问题,但我没有任何指导。

<?php
session_cache_limiter( 'nocache' );
$subject = $_REQUEST['subject']; // Subject of your email
$to = "iamuser@gmail.com";  //Recipient's E-mail

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= "From: " . $_REQUEST['name'].'<'.$_REQUEST['email'] .'>'. "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$message  = 'Name: ' . $_REQUEST['name'] . "<br>";
$message .= 'Company: ' . $_REQUEST['company'] . "<br>";
$message .= $_REQUEST['message'];

if (@mail($to, $subject, $message, $headers))
{
    // Transfer the value 'sent' to ajax function for showing success message.
    echo 'sent';
    // header('Location: ../index.html');
}
else
{
    // Transfer the value 'failed' to ajax function for showing error message.
    echo 'failed';
}
?>

2 个答案:

答案 0 :(得分:1)

设置标题时存在一些问题。 最重要的是,您需要在From部分中定义正确有效的电子邮件ID,因为谷歌通常用于验证域名,邮件来自。

如果它没有在google end上列入白名单,那么它会自动将邮件结束到垃圾邮件,这就像我想的那样。

问题很简单,PHP-Mail功能没有使用配置良好的SMTP服务器。 现在,电子邮件客户端和服务器对发送服务器的电子邮件执行大量检查,如反向DNS查找,灰名单和whatevs。所有这些测试都将失败,使用php mail()函数。如果您使用的是动态IP,则更糟糕。使用PHPMailer-Class并将其配置为使用smtp-auth以及配置良好的专用SMTP服务器(本地或远程服务器),您的问题是< / p>

您可以尝试以下代码。

$headers = "From: myplace@example.com\r\n";
$headers .= "Reply-To: myplace2@example.com\r\n";
$headers .= "Return-Path: myplace@example.com\r\n";
$headers .= "CC: sombodyelse@example.com\r\n";
$headers .= "BCC: hidden@example.com\r\n";

参考链接。 https://github.com/PHPMailer/PHPMailerPHPMailer/PHPMailerPHPMailer

您可以尝试另一种代码:

function mail_attachment($filename, $path, $mailto, $from_mail, $from_name, $replyto, $subject, $message) {
 $file = $path.$filename;
 $file_size = filesize($file);
 $handle = fopen($file, "r");
 $content = fread($handle, $file_size);
 fclose($handle);
 $content = chunk_split(base64_encode($content));
 $uid = md5(uniqid(time()));
 $header = "From: ".$from_name." <".$from_mail.">\r\n";
 $header .= "Reply-To: ".$replyto."\r\n";
 $header .= "MIME-Version: 1.0\r\n";
 $header .= "Content-Type: multipart/mixed;boundary=\"".$uid."\"\r\n\r\n";
 $header .= "This is a multi-part message in MIME format.\r\n";
 $header .= "--".$uid."\r\n";
 $header .= "Content-type:text/plain;charset=iso-8859-1\r\n";
 $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
 $header .= $message."\r\n\r\n";
 $header .= "--".$uid."\r\n";
 $header .= "Content-Type: application/octet-stream;name=\"".$filename."\"\r\n";
 // use different content types here$header .= "Content-Transfer-Encoding: base64\r\n";
 $header .= "Content-Disposition: attachment;filename=\"".$filename."\"\r\n\r\n";
 $header .= $content."\r\n\r\n";
 $header .= "--".$uid."--";
 if (mail($mailto, $subject, "", $header)) {echo "mail send ... OK";
  // or use booleans here} else {echo "mail send ... ERROR!";
 }
}

答案 1 :(得分:0)

如果您在本地服务器上开发此程序。电子邮件不会发送到您的Gmail帐户。

如果您想在本地计算机上测试代码,请安装Test Mail Server Tool

在本地计算机上运行时不会发送电子邮件,但您会了解电子邮件的外观。

当您在网络托管服务器上运行相同内容时,该电子邮件将被发送到$to字段中指定的电子邮件ID。