Frage

Ich versuche, eine E-Mail von einer Website senden Ich baue, aber es endet in den Yahoo-Spam-Ordnern auf. Es ist die E-Mail, die Anmeldeinformationen sendet. Was kann ich dagegen tun legitimieren?

$header = "From: site <sales@site.com>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <sales@site.com>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);
War es hilfreich?

Lösung

Neben Ted Percival Vorschläge, könnten Sie verwenden versuchen PHPMailer erstellen Sie die E-Mails für Sie, anstatt manuell die Header zu bauen. Ich habe diese Klasse ausgiebig verwendet und keine Probleme mit E-Mail habe als Spam durch Yahoo abgelehnt, oder jemand anderes.

Andere Tipps

  • Verwenden Sie keine HTML-Code in Ihre E-Mail.
  • Senden Sie sie über einen legitimen Mail-Server mit einem statischen IP-und Reverse-DNS (PTR), der die an die Maschine realer Hostnamen verweist (und stimmt mit einem Forward-Lookup).
  • Fügen Sie eine Message-ID (oder stellen Sie sicher, dass der lokale Mailer für Sie fügt hinzu).
  • Führen Sie Ihre E-Mail über Assassin und sehen, welche schlecht Falzlinealen es passt. Vermeiden Sie sie passen.
  • Verwenden Sie DomainKey Mail- Identifizierte Ihre Nachrichten digital signieren.

Ich habe gerade versucht, erfolgreich die folgenden von meinem Yahoo! Web-Hosting-Konto:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "To: $name \r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site " . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Sie haben jedoch einige Überschneidungen in der Kopfzeile sollten Sie brauchen nur Folgendes zu tun:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Es gibt auch die Möglichkeit, dass ‚sendmail‘ (die unter der PHP mail () Funktion ist) zusätzliche Parameter benötigt. Wenn Sie ein Problem mit Rück Header (wie Return-Path) haben nicht festgelegt ist, was du ihnen gesetzt ist, müssen Sie den fünfte Mail () Parameter verwenden. Beispiel:

mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com");

Es gibt einige weitere Beweise dafür, dass echte Vanille Sendmail Problem damit haben kann! Hoffentlich Sie ‚postfix‘ als PHP zugrunde liegende Mail () Unterstützung auf dem Zielserver.

Neben Ted Percival Vorschläge , stellen Sie sicher, dass die IP-Adresse die E-Mail herkommt eine legitime Quelle für E-Mail ist nach dem SPF-Eintrag von site.com. Wenn site.com keinen SPF-Eintrag hat, das Hinzufügen einer (der die IP-Adresse in Frage erlaubt, natürlich) helfen, die E-Mails nach Spam-Filter erhalten kann.

Und wenn es unbedingt braucht HTML in Ihrer E-Mail verwenden, stellen Sie sicher, dass Sie auch eine Nur-Text-Version als auch enthalten; Sie würden den Inhaltstyp „multipart / alternative“ anstelle von „text / html“ verwenden.

Ted Vorschläge sind gut, wie Tims sind, aber der einzige Weg, habe ich jemals in der Lage zuverlässig E-Mail zu erhalten, bis hin zu Yahoo / Hotmail / etc ist die PEAR E-Mail-Klassen zu verwenden. Versuchen diejenigen & (vorausgesetzt der Server ist OK) ich ziemlich garantieren kann es funktionieren.

Ted und Tim haben ausgezeichnete Vorschläge. Wie tut Shabbyrobe. Wir verwenden PHPMailer und haben keine Probleme mit Spam-Filter.

Eine Sache zu beachten ist, dass viele Spam-Filter zählen wird nicht eine Textversion gegen Sie haben, wenn Sie einen MIME-Format verwenden. Sie könnten alle Header und der Textversion selbst, addieren oder lassen PHPMailer oder die PEAR Mail-Bibliothek, die für Sie kümmern. kann eine Textversion zu haben oder auch nicht helfen, aber es ist eine gute Praxis und benutzerfreundlich.

Ich weiß, dass Ihr Codebeispiel ist genau das - eine Probe, aber es ist zu sagen wert: Nicht immer nur Benutzer zur Verfügung gestellten Daten in Ihren E-Mail-Header fallen. Stellen Sie sicher, dass Sie bestätigen, dass es Daten, die Sie erwarten. Es ist trivial, einen PHP-Mail-Skript in ein offenes Relay zu drehen, und das will niemand.

Überprüfen rfc 822 und rfc 2045 für E-Mail-Format. Ich finde Python E-Mail-Klasse einfach mit zu arbeiten. Ich gehe davon aus PHP PEAR das gleiche tut (nach früheren Mail). Auch der Kopf und der Körper werden durch einen „\ r \ n \ r \ n“ getrennt, nicht sicher, ob Ihr Code fügt automatisch das, aber Sie können anhängen, dass an den Header versuchen.

Ich denke nicht, dass DK / SPF notwendig sein könnte (da es viele Web-Servern sind da draußen ohne DK / SPF-Unterstützung). Es kann eine Menge von Faktoren, die es verstopfen verursachen könnte zu (mindestens 10K verschiedene Kriterien und Methoden .. p0f, Greylisting, einer grauen Liste schwarze Liste etc etc). Stellen Sie sicher, dass Ihre E-Mail richtig formatiert ist (dies macht einen großen Unterschied). Schauen Sie in Bibliotheken, die den kompletten Header für Sie erzeugen .. so man es am wenigsten Chancen haben, einen Fehler zu machen.

einen SPF-Eintrag hinzuzufügen, ist sehr einfach. Sie sollten versuchen.

Dies ist für Dreamhost und Googlemail Sie sollten auch ad Webserver Sie die IP-Adresse (in meinem Fall die Zeile vor Googlemail) Die letzte Zeile teilt den Server mit einem weichen ablehnen (als Spam markiert, aber nicht löschen) zu tun, ich verwende es statt „-“ (löschen), weil Google Dokumentation sagt so: -)

Es ist ein TXT-Eintrag v = spf1 IP4: 64.111.100.0/24 IP4: 66.33.201.0/24 IP4: 66.33.216.0/24 IP4: 208.97.132.0/24 IP4: 208.97.187.0/24 IP4: 208.113.200.0/24 IP4: 208.113.244.0/24 IP4: 208.97.132.74 IP4: 67.205.36.71 umfassen: aspmx.googlemail.com mx ~ alle

Hoffe, es hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top