我在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';
}
?>
答案 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。