我有两个网站,邮件发送到两个虚荣gmail帐户。我正在使用PHP来处理邮件,但邮件没有出现在gmail上(不是垃圾邮件/垃圾邮件,它只是没有显示)。如果我将PHP切换到我的个人hotmail帐户,邮件就会显示出来。对于通过我的ISP的个人电子邮件帐户也是如此。
用于出现在这2个虚荣gmail帐户的邮件,任何想法为什么会停止?
答案 0 :(得分:8)
您可能没有设置正确的标题数据,这些电子邮件甚至在到达垃圾邮件文件夹之前就被屏蔽了。
尝试添加以下内容:
$headers = 'From: your@email.com' . "\r\n" .
'Reply-To: some@email.com';
这是mail()函数的第四个参数。
答案 1 :(得分:4)
过去我遇到过某些免费电子邮件提供商无法从我的服务器收到任何电子邮件的问题。
我发现除了在实际消息中放入正确的标题之外,有些事情可能是罪魁祸首:
很可能,PHP正在发送电子邮件,但Google服务器拒绝来自您服务器的任何邮件。
您可以通过快速测试:
mail -s Test you@gmail.com < /dev/null
如果您的服务器没问题,您将在您的Gmail中收到一条消息,如果您没有,PHP不是问题。
答案 2 :(得分:2)
我发现您的域名拥有适当的SPF记录确实有帮助
答案 3 :(得分:0)
似乎更有可能这是服务器配置问题,而不是PHP问题。
作为旁注,我发现gmail比我们的本地系统更容忍,所以我能够将邮件发送到我的Gmail帐户,但不能将邮件发送到托管域。
我不认为Google使用第三方黑名单,但他们确实关心服务器配置(它是否正确识别自身,是否具有匹配的SPF和RDNS记录,正确响应命令)。您可以尝试一些测试服务,例如this或this。
答案 4 :(得分:0)
我觉得现在为时已晚......但是以下代码适用于gmail。
<html>
Mail Responder:<br><br>
<?php
$to = $_REQUEST['MyEmail'] ;
$subject = $_REQUEST['subject'] ;
$greeting = $_REQUEST['greeting'] ;
$realname = $_REQUEST['realname'] ;
$HisEmail = $_REQUEST['HisEmail'] ;
$message = $_REQUEST['message'] ;
$headers = 'From: '.$HisEmail;
//$headers = 'From: $HisEmail' . "\r\n" .
//'Reply-To: some@email.com';
$send = mail($to, $subject, $greeting."\n"."\n".$realname."\n"."\n".$HisEmail."\n"."\n".$message, $headers );
if ($send)
$mailReturns = "Mail sent successfully.";
else
$mailReturns = "Mail sent failed.";
?>
<?php echo $mailReturns; ?>
</html>