Ich habe ein einfaches PHP-Skript in meiner Domain, das mir eine E-Mail sendet:
...
$toMail = "[email protected]"; //this works - I get the email at my gmail
$toMail = "[email protected]"; //this doesn't - I get nothing
mail($toMail, $subject, $message, $header);
Welche Einstellung muss ich ändern, um das Problem zu beheben?
Ich hatte dieses Problem selbst, als ich kürzlich eine Website umgestaltete.
Es gab ein Problem mit der Art und Weise, wie unser System eingerichtet wurde, sodass das System der Meinung war, dass es sich um eine Spam-E-Mail handele, da die E-Mail von derselben Domäne stamme.
Erkundigen Sie sich bei Ihrem Systemadministrator, ob Sie die E-Mails senden dürfen usw.
Entweder das oder Sie müssen die Header so ändern, dass sie von einer externen Adresse gesendet werden. Ich hoffe, Sie bekommen es sortiert.
Für die Personen, die Google Apps für E-Mails verwenden, Ihren Host jedoch bei einem anderen Anbieter verwenden, sind dies detailliertere Anweisungen für Personen, die mit cPanel nicht sehr vertraut sind.
Ich könnte das Problem des Versendens von E-Mails von meiner Domäne mithilfe eines Formulars PHP beheben, wenn die E-Mail an ein Konto in meiner Domäne gesendet wird.
d. h. mydomain.com Kontaktformular, das eine E-Mail an [email protected] sendet. Das Vorstehende funktionierte nicht, auch wenn meine Domain über die richtigen MX-Einträge für die Domain verfügt, die Google Apps verwendet.
Wie Mike (und andere) oben erwähnt, wurde das Problem gelöst: Hinzufügen der MX-Datensätze in das cPanel.
Mit dieser Einstellung konnte ich E-Mails mit der E-Mail-Funktion PHP an ein E-Mail-Konto in derselben Domäne wie meine Website senden.
Google App-Anweisungen zu MX-Datensätzen https://support.google.com/a/answer/54717?hl=de
Die erste Antwort unter https://serverfault.com/questions/65365/disable-local-delivery-in-sendmail scheint mir richtig zu sein. Das Wichtigste daran ist, dass Sie Folgendes in Ihrer sendmail.mc haben wollen:
define(`MAIL_HUB`, 'example.com.')dnl
define(`LOCAL_RELAY`, 'example.com.')dnl
Wo ist example.com die betreffende Domain?.
Wenn du benutzt postfix, mach das :
nano /etc/postfix/main.cf
# mydestination = ...
mydestination =
/etc/init.d/postfix reload
Sie müssen einen zusätzlichen Parameter für Ihre Mail-Funktion festlegen. In Ihrem Arbeitsbeispiel müssen Sie Ihrer E-Mail-Adresse '-f' voranstellen, z.
mail($toMail, $subject, $message, $header, "[email protected]");
Ich hatte das gleiche Problem und konnte es auf folgende Weise lösen. Ich speichere E-Mails nicht lokal auf dem Server, sondern verwende MX-Einträge auf dem Registrar, um E-Mails in Google Apps zu leiten. Es stellte sich heraus, dass die MX-Datensätze auch in Cpanel aktualisiert werden mussten, da der Server die MX-Datensätze nicht vom Registrar entnahm, sondern verwarf, da kein lokaler MX-Datensatz oder Postfach vorhanden war. Ich habe die MX-Einträge auf Cpanel so aktualisiert, dass sie mit den MX-Einträgen des Registrators übereinstimmen. Das Problem wurde sofort behoben
Haben Sie Ihre E-Mail-Adresse auf einem anderen Server als der Website? Wenn dies der Fall ist, versucht das Skript PHP möglicherweise, es intern zu senden. In diesem Fall verschwindet es einfach, während die anderen Ziel-E-Mails im Internet abgelegt und ordnungsgemäß weitergeleitet werden.
Die Lösung, die ich gefunden habe, war das Deaktivieren des Mail-Servers auf Ihrem Webhost, und PHP wird die Nachricht an das Internet senden, um ordnungsgemäß gesendet zu werden.
Ich stimme Michael Hellein zu, das Hauptproblem könnte Ihre sendmail sein, wenn Sie Ihre E-Mail-Konten für die Domain beispiel.de als lokale Konten betrachten. Wenn ja, hier sind einige Leitlinks:
In meinem Fall mit FreeBSD 8.2 war der eigentliche Trick:
# cd /etc/mail
# vim freebsd.mc
Fügen Sie diese beiden Zeilen hinzu:
define(`MAIL_HUB', `example.com.')dnl
define(`LOCAL_RELAY', `example.com.')dnl
Kurz bevor:
MAILER(local)
MAILER(smtp)
Dann:
# make
Dies ist Ausgabe:
cp freebsd.mc Host.example.com.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 Host.example.com.mc > Host.example.com.cf
cp freebsd.submit.mc Host.example.com.submit.mc
/usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/ /usr/share/sendmail/cf/m4/cf.m4 Host.example.com.submit.mc > Host.example.com.submit.cf
Dann:
# cp sendmail.cf sendmail.cf.bak
# cp Host.example.com.cf sendmail.cf
# /etc/rc.d/sendmail restart
Ich hoffe, das erspart jemandem Kopfschmerzen.
Mit PostFix, Debian7, SMTP-Mailjet
Wenn Domäne my-domain.com
ist, ändern Sie in /etc/postfix/main.cf
mydestination = my-domain.com, localhost, localhost.localdomain, localhost
zu
mydestination = localhost, localhost.localdomain, localhost
Ich hatte auch dieses Problem. Bei Deaktivierung des Mailservers wurde keine E-Mail gesendet! Daher habe ich alle lokalen Domainnamen aus der /etc/mail/local-Host-names
-Datei entfernt
Ich hatte ein ähnliches Problem, bei dem alle E-Mails perfekt an andere Domains wie Google Mail, Live, Yahoo usw. gesendet wurden, alle E-Mails jedoch auf lokalen Domains verschwinden. Ich hatte einen VPS-Server mit Godaddy, der auf Linux basierte, auf Qmail.
Ich habe das Problem gelöst, indem ich die spezifischen Domänennamen in der Datei var/qmail/control/virtualdomains entfernt habe.
Ein SMTP-Mailserver könnte ebenfalls eine Option sein.
vergewissern Sie sich, dass Sie tatsächlich E-Mails an Ihr Domain-E-Mail-Konto senden können, und überprüfen Sie dann Ihren Code/Ihre E-Mail. Stellen Sie sicher, dass alles richtig geschrieben ist.
Ich verbringe mehr als 8 Stunden mit diesem Fehler und löse ihn, ändere den Header in eine andere E-Mail-Adresse und es wird funktionieren
Wie von anderen erläutert, sind einige Server so konfiguriert, dass sie E-Mails ablehnen, denen eine gültige E-Mail-Adresse auf dem sendenden Server fehlt. Stellen Sie sicher, dass die Zeichenfolge $ headers eine definierte gültige E-Mail-Adresse "Von: [email protected]" enthält.
Dieses Problem hatte ich einige Male, und der Täter war, wenn die E-Mail auf einem anderen Server (z. B. Google Apps) gehostet wurde. Wenn E-Mails an die lokale Domäne gesendet werden, muss der MX-Eintrag nicht nachgeschlagen werden. Daher wird er nicht ordnungsgemäß weitergeleitet. Die Lösung für dieses Problem besteht einfach darin, die Mail-Funktion auf Ihrem Server durch Ihren Host zu deaktivieren.
Ich hatte das gleiche Problem und da ich auf einem anderen Server für E-Mail gehostet wurde, musste ich nur den lokalen Mail-Server deaktivieren.
Stellen Sie sicher, dass Ihr Datensatz txt
für Ihre Domain korrekt eingerichtet ist. Dies geschieht normalerweise, wenn Sie dies nicht in den Datensatz txt
einfügen: @ (None)
v = spf1 include: _spf.google.com ~ all
Was für mich funktionierte, ist die Auswahl von Local Mail Exchanger :
Local Mail Exchanger ermöglicht Ihnen das Senden einer E-Mail an ein Konto derselben Domäne in GoDaddy: z. B .: eine E-Mail an [email protected]