Nachdem ich SPF Record eingerichtet habe, bin ich immer noch hier, um zu überprüfen, warum ich diese E-Mail nicht an einen Hotmail-Account senden kann. Ich kann es ohne Probleme an Google Mail senden. Bitte bestätigen Sie, ob der Code korrekt ist und der SPF-Datensatz korrekt ist:
%Vor%Hier ist der SPF:
%Vor%Sind alle diese richtig konfiguriert?
Hatte das gleiche Problem. Ich habe das ganze Skript 30 mal überprüft. Jede Einstellung jeweils. und checked and rechecked dns zeichnet dkim und spf 100 mal auf.
Nichts hat funktioniert.
Ich habe hotmail / outlook / live per E-Mail über das Problem gesendet. Ich habe keine Hilfe erwartet, aber innerhalb weniger Stunden war das Problem gelöst.
Es war nicht im Drehbuch. Hotmail blockiert nur E-Mails, die über die meisten Webseiten gesendet werden. Auch wenn Ihr Spam-Ruf in Ordnung ist. Sie haben die IP des Servers auf eine Whitelist gesetzt und das Problem wurde gelöst.
Sie können es zurück ändern, wenn sie ein schlechtes Verhalten feststellen. Es gibt ein Limit für das Senden von E-Mails. Wenn Ihr Server einen schlechten Ruf hat, wird er den Server wahrscheinlich nicht zu seiner Whitelist hinzufügen. Dies kann bei Shared Hosting-Paketen ein Problem sein. Ein anderer Benutzer auf demselben Server, auf dem Sie Ihre Website hosten, kann die Reputation des Servers erhöhen.
Benutze SMTP Auth, dann würde sich Hotmail nicht mehr beschweren. Anonyme E-Mails werden von fast allen empfangenden Servern als Spam angesehen.
%Vor%Aber ofc. Abhängig davon, ob Sie die Kontrolle über Ihr SMTP haben oder nicht, sollten Sie sicherstellen, dass grundlegende Dinge wie Reverse-DNS-Lookup richtig eingerichtet ist
Aufgrund der Diskussion in den Kommentaren möchte ich ein wenig mehr Informationen über mein Denken hinzufügen, warum SMTP Auth dies beheben wird:
Wenn Sie PHPMailer ohne die Definition eines SMTP-Servers verwenden, wird PHPMailer im mail
-Modus betrieben, der nur die Funktion mail()
von PHP aufruft.
Die Mail-Funktion selbst verwendet die SMTP-Einstellungen, die in der PHP-INI-Datei konfiguriert sind, oder die Standardwerte, die hier aufgelistet sind: Ссылка
Standardwerte:
%Vor%Da das OP einen lokalen Mailserver konfiguriert hat (oder warum würde er MX-Records einrichten?), wird sich php nun ohne Authentifizierung mit diesem SMTP-Server verbinden. Der Server akzeptiert die Nachricht und sendet sie an den nächsten Server.
(Gleiches gilt, wenn 'sendmail' von unix verwendet wird)
Jeder Server in der Kette und insbesondere der empfangende Server können jetzt sehen, dass ein privates SMTP verwendet wurde und keine Authentifizierung war unter der Voraussetzung. Das ist schon Spam-Score über 9000, da bei einer Einstellung wie dieser (theoretisch) jeder diesen Server benutzen könnte, um Mails zu versenden! Einschränkungen wie nur von localhost sind ofc. anderen Servern nicht bekannt, daher wird SMTP als Open Mail Relay Ссылка betrachtet / p>
Wenn Sie PHPMailer zu SMTP-Auth umschalten (auch wenn der lokale SMTP-Server noch verwendet wird), wird diese Information zu dem Eintrag hinzugefügt, den der Server beim Weiterleiten der Mail erstellt hat. Der Eintrag wird wie folgt aussehen:
%Vor% Der nachfolgende A
after ESMTPA
teilt dem empfangenden Server mit, dass Server1
ein gültiges Benutzerkonto auf mydomain.de
verwendet hat, um den Sendeversuch zu starten, was bedeutet, dass der SMTP-Server weiß der Ursprung der Mail und könnte Informationen über den Absender bereitstellen.
Dennoch ist der lokale SMTP-Server nicht bekannt, daher könnte es in diesem Fall zu einer Greylist und zu verschiedenen RBLs kommen, was in diesem Fall kein Problem darstellen sollte.
Wenn der (lokale) SMTP-Server nun ALLE Prüfungen besteht (Reverse-DNS Lookup, Greylisting, RBLs und was nicht) - hat die Mail eine gute Chance, erfolgreich ausgeliefert zu werden, auch wenn kein Remote-SMTP verwendet wird Der Server konnte erfolgreich authentifiziert werden, ebenso wie der Absender, der diesen Server verwendet. (Sonst könnte kein Unternehmen eigene Server einrichten)
Daher wirkt sich die Verwendung von SMTP-Auth (oder einer anderen Authentifizierungsmethode) auch dann aus, wenn kein Remote-SMTP-Server verwendet wird.
Authentifizierte Mails stellen keine Garantie dafür dar, dass sie nicht als Spam betrachtet werden - aber nicht authentifizierte Mails werden im Spam-Score gängiger Systeme definitiv höher eingestuft.
Haben Sie auf einem Live-Server getestet? Wenn ja, welchen Fehler haben Sie bekommen? Hast du das Debugging deines phpmailers aktiviert, um zu wissen, welche Fehler es hat? Wenn Sie nicht mit SMTP arbeiten, können Sie dies mit
testen $mail->do_debug = true;
Wenn Sie SMTP verwenden, verwenden Sie
$mail->SMTPDebug = true;
Welche Ausgabe haben Sie von Ihrem Debugger erhalten? Von dort bekommst du einen Hinweis darauf, woher dein Problem kommt.
Ich nehme auch die Antwort von @ dognose an, indem ich Sie auffordere, SMTP
besser zu verwenden. Auf diese Weise durchläuft Ihre E-Mail eine Authentifizierung, die Ihre Identität bestätigt.
Wenn $mail->Port = 26;
nicht funktioniert, können Sie $mail->Port = 25;
versuchen.
Der momentan von Ihrem DNS veröffentlichte SPF ist ungültig, weil Sie drei Datensätze haben!:
%Vor%Der erste ist gültig; Sie sollten die zweiten beiden löschen.
Der Inhalt dieses Datensatzes ist für Ihre Domäne korrekt, wenn Sie E-Mails von 182.50.130.73 senden. Die 'mx'-Zeilengruppe ist nicht unbedingt notwendig, da sie auf securyserver.net trotzdem zeigt, aber sie kann DNS-Lookups auf empfangenden Servern speichern.
Bevor Sie mit dem Senden von E-Mails über mail () oder SMTP beginnen, stellen Sie sicher, dass Sie ein gültiges Absender-E-Mail-Konto in Ihrem cpanel erstellen.
%Vor%Dies ist sehr wichtig, wenn nicht alle E-Mails, die Sie senden, als SPAM markiert werden und zu Junk gehen.
Sobald dies erledigt ist, müssen Sie Domänenschlüssel und SPF-Datensätze einrichten. Wenn Sie eine dedizierte IP verwenden, anstatt die von Ihren Hosts angegebene Freigabe zu verwenden, wird dies ebenfalls hilfreich sein.
Überprüfen Sie abschließend Ihre E-Mails mit allen drei großen E-Mail-Anbietern wie Hotmail, Yahoo und Gmail.
Wahrscheinlich müssen Sie den genauen Grund Schritt für Schritt aufschlüsseln. Ich weiß genau, dass Hotmail einen regelbasierten Spam-Filter verwendet (was ziemlich streng ist) und Gmail mehr wie ein selbstlernendes System verwendet, was erklären könnte, warum Gmail Ihre Nachricht akzeptiert und Hotmail nicht.
Folgendes können Sie jedoch überprüfen:
$mail->isSendmail();
, funktioniert wahrscheinlich nicht unter Windows, wenn sendmail nicht richtig eingerichtet ist) oder überprüfe die Einstellungen deiner php.ini, welcher Mailserver benutzt wird (benutze ini_set('SMTP', 'yourhost.com');
um zu überschreiben, aber dies funktioniert nur unter Windows so weit ich weiß).