2009-04-13 17 views
1

Ich benutze die PHP mail() Funktion, um E-Mail von einem Kontaktformular zu senden. Die Funktion gibt true zurück, sollte also in Ordnung sein. Aber ich erhalte die E-Mail nicht.Gründe, warum PHP Mail möglicherweise nicht funktioniert

Ich habe Beiträge gesehen, die sagen, dass Sie immer die Von und Reply-To Header in PHP Mail verwenden, um sicherzustellen sollte es geliefert wird. Ich habe verschiedene Konfigurationen ausprobiert, aber nichts funktioniert noch.

Gibt es eine andere Möglichkeit, die mail() Funktion zu debuggen?

+0

Wie wäre es mit Code, damit wir sehen können, was Sie tun? – Tim

Antwort

2

dieses Problem meiste Zeit auf Header zurückzuführen ist, kann die Mail aber der SMTP-Server kann es überhaupt

wegen der fehlerhaften Header erhalten senden nie liefern

Ich würde vorschlagen, dass Sie für PHP eine Mailing-Klasse verwenden wie phpMailer, die verwenden, um alle Ihre Probleme mit Kopf- und hat eine wirklich schöne Schnittstelle Griffe

prost

+0

Danke - Ich fand unabhängig, dass dies ist, was Joomla verwendet, so kann es nicht so schlimm sein. ;) – DisgruntledGoat

1

Senden Sie die E-Mail von Ihrem eigenen Computer? Möglicherweise haben Sie keinen SMTP-Server eingerichtet, auf den Sie über Ihre lokale Domäne hinaus zugreifen können. Je nach Mail-Service werden Sie möglicherweise auch von einem Spam-Filter blockiert.

Wenn Sie dies von Ihrem eigenen Computer aus tun, testen Sie es, indem Sie eine lokale Nachricht an eines Ihrer lokalen E-Mail-Konten senden (wenn Sie Linux verwenden). Wenn Sie denken, dass dies das Problem ist, installieren Sie Postfix.

Wenn Sie es von einem Hosting-Dienst tun, überprüfen Sie Ihren Spam-Ordner.

+0

Ich sende es von meiner Website. Und es kommt definitiv nicht in meinen Spam-Ordner. Ich erkundige mich bei meinem Gastgeber nach Informationen. – DisgruntledGoat

+0

* Mit "Website" meine ich gehostete Online-Site, anstatt meinen Computer. – DisgruntledGoat

0

Auf Unix-Systemen mail() verwenden Sie sendmail, und es gibt viele Gründe (Berechtigungen, Fehler in der Konfiguration), dass dies fehlschlagen kann. Ich bin nicht sicher, ob PHP all dies erkennen und melden würde. Überprüfen Sie alle Protokolle von sendmail.

Sie sollten sich auch Helfer zum Senden von E-Mails ansehen, zum Beispiel von PEAR oder Zend.

2

Wenn Sie Windows verwenden, müssen Sie einen SMTP-Server installieren.

Wenn Sie Linux verwenden, müssen Sie sendmail aktivieren und sicherstellen, dass das Benutzerkonto, auf dem PHP installiert ist, Zugriff auf die sendmail-Binärdatei hat.

Fragen Sie Ihren Host, ob Ihr Konto über ausreichende Berechtigungen für den Zugriff auf die Binärdatei verfügt.

Die Eingabe Ihres Codes hier könnte auch helfen, falls es sich um einen Fehler handelt, den Sie übersehen haben.

0

Auf einigen Servern müssen Sie den Header FROM explizit festlegen oder er wird nicht gesendet.

0

Ziege, wenn der Server, den Sie versuchen, die Funktion auf einer dynamischen externen IP ist, sind Sie SOL. Die meisten Mail-Server blockieren jetzt eingehende Verbindungen an Port 25 von dynamischen IP-Bereichen. :(

1

Ich weiß, dass es nicht speziell Ihre Frage beantwortet, aber mein Rat wäre, etwas wie swiftmailer anstelle der Post zu verwenden(). Es ist viel zuverlässiger, sowohl in Bezug auf das Erhalten-es-zu-Arbeit und bekommen-

0

Ist es ein shared hosting? Ich weiß, dass einige Unternehmen die Mail-Funktion außer Kraft setzen, um Spam zu vermeiden, und zusätzliche Argumente oder einige vordefinierte Werte benötigen (wie das from-Feld muss eine gültige Adresse sein) Ihr Domain-Name) .Sie könnten mit Ihrem Webhosting-Unternehmen in Verbindung treten. Haben Sie eine private Einrichtung, in der Sie den gleichen Code versuchen konnten?

0

kann Ihr Provider Mail-Server verboten werden. Überprüfen Sie die DNS-Blacklist oder wenden Sie sich an Ihren Hosting-Anbieter.

Verwandte Themen