Почта PHP не отображается в Gmail, но обнаруживается в Hotmail и других сторонних / ISP-аккаунтах - PullRequest
8 голосов
/ 13 мая 2009

У меня есть 2 сайта, где почта отправляется на две учетные записи gmail. Я использую PHP для обработки почты, но почта не отображается в gmail (не в спаме / нежелательной, просто не отображается). Если я переключу PHP для отправки в мою личную учетную запись Hotmail, почта появится. То же самое для личной учетной записи электронной почты через моего провайдера.

Почта, которая раньше появлялась в этих двух учетных записях gmail, есть идеи, почему они просто прекратили?

Ответы [ 5 ]

8 голосов
/ 13 мая 2009

Возможно, вы не установили правильные данные заголовка, и эти электронные письма блокируются даже до того, как они попадают в папку со спамом.

Попробуйте добавить что-то вроде этого:

$headers = 'From: your@email.com' . "\r\n" .
'Reply-To: some@email.com';

Это четвертый параметр функции mail ().

4 голосов
/ 14 мая 2009

В прошлом я сталкивался с проблемами, когда некоторые бесплатные провайдеры электронной почты не получали электронную почту с моих серверов.

Я обнаружил, что виновником может быть несколько вещей, помимо добавления правильных заголовков в фактическое сообщение:

Скорее всего, PHP отлично отправляет электронную почту, но серверы Google отклоняют любые сообщения, приходящие с вашего сервера.

Вы можете проверить это, выполнив:

mail -s Test you@gmail.com < /dev/null

Если с вашим сервером все в порядке, вы получите сообщение в своем gmail, если нет, PHP не является проблемой.

2 голосов
/ 14 мая 2009

Я обнаружил, что наличие правильной записи SPF для вашего домена действительно помогает

http://www.openspf.org/SPF_Record_Syntax

0 голосов
/ 21 февраля 2010

Я вижу, что уже поздно, но ... следующий код работает для 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>
0 голосов
/ 14 мая 2009

Скорее всего, это проблема конфигурации сервера, а не проблема PHP.

В качестве дополнительного примечания я обнаружил, что gmail более терпим, чем наша локальная система, поэтому я смог получать сообщения на свою учетную запись gmail, но не на свою учетную запись в хост-домене.

Я не думаю, что Google использует сторонние черные списки, но они заботятся о конфигурации сервера (правильно ли он идентифицирует себя, имеет соответствующие записи SPF и RDNS, правильно реагирует на команды). Вы можете попробовать несколько служб тестирования, таких как this или this .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...