php Mail-funkton

DerEisige

Erfahrenes Mitglied
Hallo

Ich habe ein kleines Problem mit meiner mail-funktion und zwar werden die Mails immer als Spam deklariert.

PHP:
function eMail($email, $betreff, $text){
    global $supportEmail, $projekt, $absender;
    $header  = ("To: $email\n");
    $header .= ("From: $projekt<".$supportEmail.">"."\n");
    $header .= ("Reply-To: " . $absender ."\n");
    $header .= ("Return-Path: " . $supportEmail ."\n");
    $header .= ("X-Mailer: PHP/" . phpversion() ."\n");
    $header .= ("X-Sender-IP: " . $_SERVER['REMOTE_ADDR']."\n");
    $header .= ("Content-type: text/html; charset=utf-8 \n");
    if(mail( $email, $betreff, $text, $header, "-f ".$supportEmail)){
        return TRUE;
    }else{
        return FALSE;
    }
}

Was ist daran nun falsch?
 
Hi,

schick mal bitte eine an folgende Adresse, dann kann ich dir sagen was da schief läuft.

<snip - nicht mehr wichtig>

Vom Code her sehe ich keinen Fehler / Grund für die Spam-Markierung, denke mal dass da ein Problem mit dem Mailserver an sich ist.

Grüße,
BK
 
Zuletzt bearbeitet:
Statt dem "\n" am Zeilenende, nimm mal die CRLF-Zeichen (\r\n) oder "PHP_EOL". Der Zusatz "-f" ist Server-Abhängig und nicht zwingend, so etwas wird meistens auf Shared-Server benötigt, wenn die Sendmail-Konfiguration (mail-Adresse des Admins) ihre Daten aus der VPS-Konfiguration enthält
 
Hi,

hier mal die Header von der Mail. Für dich besonders interessant sollte der SpamAssassin Teil sein:
Code:
Return-Path: snip
X-Original-To: snip
Delivered-To: snip
Received: by smtp.wf-hosting.de (Postfix, from userid 111)
	id BE2C817214B; Tue, 21 Jan 2014 01:09:48 +0100 (CET)
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on iris.wf-hosting.de
X-Spam-Flag: YES
X-Spam-Level: ***********
X-Spam-Status: Yes, score=11.7 required=5.0 tests=FROM_MISSP_REPLYTO,
	HTML_IMAGE_ONLY_08,HTML_MESSAGE,MIME_HEADER_CTYPE_ONLY,MIME_HTML_ONLY,
	MISSING_DATE,MISSING_MID,RCVD_IN_DNSWL_NONE,TO_NO_BRKTS_FROM_MSSP,
	T_REMOTE_IMAGE autolearn=no version=3.3.2
X-Spam-Report: 
	*  0.0 HTML_MESSAGE BODY: HTML included in message
	*  1.8 HTML_IMAGE_ONLY_08 BODY: HTML: images with 400-800 bytes of words
	*  1.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts
	* -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no
	*      trust
	*      [91.198.169.19 listed in list.dnswl.org]
	*  0.1 MISSING_MID Missing Message-Id: header
	*  2.0 MIME_HEADER_CTYPE_ONLY 'Content-Type' found without required MIME
	*      headers
	*  1.4 MISSING_DATE Missing Date: header
	*  2.5 TO_NO_BRKTS_FROM_MSSP Multiple formatting errors
	*  2.8 FROM_MISSP_REPLYTO From misspaced, has Reply-To
	*  0.0 T_REMOTE_IMAGE Message contains an external image
Received: from mail-out2.b-one.net (mail-out2.one.com [91.198.169.19])
	by smtp.wf-hosting.de (Postfix) with ESMTP id EFBB6172121
	for <snip>; Tue, 21 Jan 2014 01:09:45 +0100 (CET)
X-DKIM: Sendmail DKIM Filter v2.8.2 smtp.wf-hosting.de EFBB6172121
Received: from localhost.localdomain (web131.local.one.com [10.246.64.131])
	by mail-out2.b-one.net (Postfix) with ESMTP id EF866EBFD
	for <snip>; Tue, 21 Jan 2014 01:09:44 +0100 (CET)
Received: from xxx.xxx.178.62 by www.blacki.in via /test2.php with HTTP; Tue, 21 Jan 2014 00:09:44 +0000
To: tutorials-397209@snip
Subject: [** SPAM **] Test Mail wegen Spam
X-PHP-Originating-Script: 1664197:test2.php
To: tutorials-397209@snip
From: Blacki<snip>
Reply-To: 
X-Mailer: PHP/5.3.28
X-Sender-IP: xxx.xxx.178.62
Content-type: text/html; charset=utf-8
X-Spam-Prev-Subject: Test Mail wegen Spam
Message-Id: <20140121000948.BE2C817214B@smtp.wf-hosting.de>
Date: Tue, 21 Jan 2014 01:09:48 +0100 (CET)

Kurz gesagt, deine Mail hat einige Format-Fehler, somit ein hoher Score für meinen Spamfilter. U.a.: Doppeltes "To:" ohne "<>", kein "Date:", leeres "Reply-To:".

@bofh1337: Ob \n oder \r\n, das ist vollkommen irrelevant.

Grüße,
Simon
 
Zuletzt bearbeitet:
Hi,

@bofh1337: Danke für das RFC, ich weiß dass dort explizit auf das CRLF verwiesen wird, mir ist bis jetzt nur noch kein Server untergekommen, der Mails mit nur LF abgelehnt hätte. Selbst Microsoft akzeptiert die Mails ohne Probleme. Hier geht es aber um die (irrtümliche) Markierung von Mails als Spam, nicht um Protokollfehler oder nicht zugestellte Mails.

Grüße,
BK
 
Ich habe hier zum Vergleich den Schnippel aus meiner Mail-Klasse, die seit rund 5 Jahren ohne Probleme und Notices läuft...vielleicht mal vergleichen?

Die 3 Mail-Adressen und die Konstante kann ja angepasst werden

Code:
$to = 'mail-adresse vom empfaenger';
$from = 'mail-adresse vom absender';
$sendername = 'mail-adresse vom absender';
$subject = 'Langer Text';
$message = 'Inhalt der Mail';

define ('SYSTEM_CHARSET', 'UTF-8');

$subject = strip_tags (html_entity_decode ($subject));
$message = strip_tags (html_entity_decode ($message));
$header = "From: " . $sendername . " <" . $from . ">" . PHP_EOL;
$header .= "Reply-To: " . $sendername . " <" . $from . ">" . PHP_EOL;
$header .= "X-Mailer: PHP v" . PHP_VERSION . PHP_EOL;
$header .= 'Content-type: text/plain; charset=' . SYSTEM_CHARSET . PHP_EOL;

@mail($to, $subject, $message, $header);
 
Hi bofh,

Läuft dein Script auf einem Linux-Server hast du deine Header auch per \n getrennt. ;-) (Quelle: Klick)

Du verwendest als Content-Type "text/plain", der Threadersteller braucht aber anscheinend html. Somit fallen bei dir schon mal ein paar Spamassassin Rules weg.

Back-to-topic: @DerEisige: Wie siehts aus, helfen dir meine Angaben weiter? Weißt du, woran es nun scheitert?

Grüße,
BK
 
Ja danke die Beiträge haben mir sehr geholfen.

Ich kann leider erst heute Abend mein Script überarbeiten und es testen.
Werde dan das Ergebnis spätestens morgen präsentieren.
 
Zuletzt bearbeitet:
Hi bofh,

Läuft dein Script auf einem Linux-Server hast du deine Header auch per \n getrennt. ;-) (Quelle: Klick)

Du verwendest als Content-Type "text/plain", der Threadersteller braucht aber anscheinend html. Somit fallen bei dir schon mal ein paar Spamassassin Rules weg.

Back-to-topic: @DerEisige: Wie siehts aus, helfen dir meine Angaben weiter? Weißt du, woran es nun scheitert?

Grüße,
BK

Das läuft auf allen Server, weil die PHP-Intere Konstante "PHP_EOL" automatisch das richtige EOL einfügt (je nachdem, ob es ein Win, Mac oder Linux-Server ist).

Bei HTML-Mails ist es fast gleich, hier ist der komplette Bereich, wie er bei mir ist:

Code:
            if ($type == 'text') {
                $subject = strip_tags(html_entity_decode($subject));
                $message = strip_tags(mxHtmlEntityDecode($message));
                $header = "From: " . $sendername . " <" . $mxsender . ">" . PHP_EOL;
                $header .= "Reply-To: " . $sendername . " <" . $mxsender . ">" . PHP_EOL;
                $header .= "X-Mailer: PHP v" . PHP_VERSION . PHP_EOL;
                $header .= 'Content-type: text/plain; charset=' . _wSET_CHARSET . PHP_EOL;
            } else {
                $header = "From: " . $sendername . " (" . $mxsender . ")" . PHP_EOL;
                $header .= "Reply-To: " . $sendername . " <" . $mxsender . ">" . PHP_EOL;
                $header .= "X-Mailer: PHP v" . PHP_VERSION . PHP_EOL;
                $header .= "MIME-Version: 1.0" . PHP_EOL;
                $header .= 'Content-type: text/html; charset=' . _wSET_CHARSET . PHP_EOL;
            }
            return @mail ($to, $subject, $message, $header);
 
Zurück