2009-05-13 9 views
8

Ich habe 2 Websites, an die E-Mails an zwei E-Mail-Konten gesendet werden. Ich verwende PHP, um die E-Mails zu bearbeiten, aber die E-Mails werden nicht in Google Mail angezeigt (nicht in Spam/Junk-E-Mails, sie werden einfach nicht angezeigt). Wenn ich die PHP-Funktion so umschalte, dass sie an mein persönliches Hotmail-Konto gesendet wird, wird die Mail angezeigt. Gleiches gilt für einen persönlichen E-Mail-Account über meinen ISP.PHP-Mail wird nicht in Gmail angezeigt, erscheint aber bei Hotmail und anderen Drittanbieter-/ISP-Konten

Die Mail verwendet, um bei diesen 2 Eitelkeit Gmail-Konten, irgendwelche Ideen, warum sie nur aufhören zu zeigen?

+0

Ich habe das gleiche Problem. Ich habe auch alle benötigten Header, aber die E-Mail erscheint einfach nicht. –

Antwort

8

Es besteht die Möglichkeit, dass Sie keine richtigen Header-Daten festgelegt haben, und diese E-Mails sind blockiert, noch bevor sie den Spam-Ordner erreichen.

Probieren Sie etwas wie dies hinzufügen:

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

Dies ist der vierte Parameter der Funktion mail().

+0

Ich stimme zu, das ist möglich. –

+0

Was wären die richtigen Header-Daten? Ich setze keine Header: $ to = '[email protected]'; $ subject = 'mein Thema'; $ body = urlencode ($ comments); E-Mail ($ zu, $ Betreff, URL-Code ($ body), "Von: {$ _POST ['E-Mail']}}"); –

+0

Und um es noch einmal zu wiederholen, die Mail wurde an beide Konten weitergeleitet. Es wurden keine Codeänderungen vorgenommen. –

4

Ich habe Probleme in der Vergangenheit festgestellt, wo bestimmte kostenlose E-Mail-Anbieter keine E-Mails von meinen Servern erhalten würden.

fand ich, dass ein paar Dinge, kann die Ursache sein, oben auf die richtigen Header in der eigentlichen Nachricht setzen:

  • Stellen Sie sicher, dass Server für reverse dns lookup
  • Vergewissern Sie sich so konfiguriert ist, nicht ausgeführt werden eine offene smtp relay
  • sicherstellen, dass Ihr Server aufzuwickeln nicht in jedem email blacklists (wenn Sie ein offenes Relay hatte, haben Sie sich wahrscheinlich die schwarze Liste gesetzt.

Wahrscheinlich sendet PHP die E-Mail, aber die Google-Server lehnen alle Nachrichten ab, die von Ihrem Server kommen.

Sie können dies testen, indem eine schnelle tun:

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

Wenn Ihr Server in Ordnung ist, erhalten Sie eine Nachricht in Ihrem Google Mail, wenn Sie dies nicht tun, PHP ist nicht das Problem.

0

Scheint wirklich hilft für Ihre Domain einen richtigen SPF-Eintrag mit höherer Wahrscheinlichkeit, dass dies ein Server-Konfigurationsproblem und nicht ein PHP-Problem.

Als Nebenbemerkung habe ich festgestellt, dass Gmail toleranter als unser lokales System ist. Daher konnte ich Nachrichten an mein Google Mail-Konto senden, aber nicht an mein Konto auf der Hosting-Domain.

Ich glaube nicht, dass Google schwarze Listen von Drittanbietern verwendet, aber sie kümmern sich um die Serverkonfiguration (identifiziert sie sich korrekt, hat übereinstimmende SPF- und RDNS-Einträge, reagiert auf Befehle ordnungsgemäß). Sie könnten ein paar Testdienste wie this oder this versuchen.

0

Ich sehe es ist zu spät, aber ... der folgende Code funktioniert für Google Mail.

<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

Das funktionierte nicht für Google Mail für mich. Hat genau denselben Code erhalten und an ein Google Mail-Konto gesendet. –

Verwandte Themen