2009-05-13 14 views
8

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

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

+0

У меня такая же проблема. У меня есть все необходимые заголовки, но письмо просто не появляется. –

ответ

8

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

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

$headers = 'From: [email protected]' . "\r\n" . 
'Reply-To: [email protected]'; 

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

+0

Согласен, это возможно. –

+0

Какими будут правильные данные заголовка? Я не устанавливаю заголовки: $ to = '[email protected]'; $ subject = 'my subject'; $ body = urlencode ($ comments); mail ($ to, $ subject, urldecode ($ body), "From: {$ _POST ['email']}"); – 2009-05-13 17:55:11

+0

И повторить, что почта использовалась для обеих учетных записей. Никаких изменений кода не было. – 2009-05-13 17:56:26

4

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

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

  • Убедитесь, что сервер настроен для reverse dns lookup
  • Убедитесь, что вы не работаете открытая smtp relay
  • убедитесь, что сервер не заводиться в любой email blacklists (если у вас открытое реле, вы, вероятно, был занесен в черный список.

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

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

mail -s Test [email protected] < /dev/null 

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

0

Кажется более вероятным, что это проблема конфигурации сервера и не PHP вопрос.

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

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

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: [email protected]'; 

$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> 
+1

Это не работает для Gmail для меня. Вызвать тот же самый код и отправить его в аккаунт Gmail. –

Смежные вопросы