Problem mit PHP mail()

seppl2000

Casino-Winners.de
ID: 272633
L
13 Februar 2007
2.401
165
Hallo,

ich habe ein Problem mit der PHP-eigenen Funktion: mail()

Die Email, die abgesendet wird, landet meistens im Spamordner.
Bei Arcor kommt sie zb. gar nicht an.

Wo liegt das Problem?

Hier mal mein Code:

PHP:
ignore_user_abort(true);
include ("../../config/config.php");
include ("../../config/functions.php");
db_connect();

$warteliste = db_query("SELECT * FROM `system_mail-warteliste` WHERE `verschickt` = '0' ORDER BY `prioritaet` DESC LIMIT 50");
$anzahl = 0;
while ($daten = mysql_fetch_array($warteliste))
  	{
	$mail_verschickt = false;
	// Mail verschicken
	$mail_verschickt = mail(stripslashes($daten['empfaenger']),stripslashes($daten['betreff']),stripslashes($daten['nachricht']),stripslashes($daten['kopf']));
	// Überprüfen ob Mail verschickt worden ist
	if ($mail_verschickt == true)
		{
		db_query("UPDATE `system_mail-warteliste` SET `verschickt` = '1', `verschickt-zeit` = ".time()." WHERE `id` = ".$daten['id']."");
		$anzahl += 1;
		}
	}
db_close();
die('Es wurden erfolgreich '.$anzahl.' Mails verschickt!');

Und hier noch die Beispiel-Inhalte der Variablen:
$daten['empfaenger'] =
$daten['betreff'] =
Hans-Wurst.net - Slogan - Passwort
$daten['nachricht'] =
Hallo.

Sie haben Ihr Passwort von Hans-Wurst.net - Slogan angefordert.

Passwort: xxyyxxyy

Mit freundlichen Grüßen
Das Hans-Wurst.net - Slogan Team
$daten['kopf'] =
FROM: Hans-Wurst.net - Slogan <[email protected]>\nX-Mailer: PHP/4.4.9\n


Danke schonmal für eure Hilfe.

mfg
seppl200
 
jo leider passiert es öfters dass solche bestätigungen im Spam landen.

Was du auf jeden fall mal ändern solltest sind deine Kopfdaten, so ist das auf jedenfall umzureichend. Du hast nur einen FROM und einen x-mailer drin, schau dir mal an was zb Mails von Outlook alles drin haben, und füge mal die wichtigen sachen hinzu.

SChau dir mal an was da so reinkommen könnte,
https://www.th-h.de/faq/headerfaq.php#headerzeilen
 
so, ich habe es jetzt wie folgt geändert:

PHP:
<?php
ignore_user_abort(true);
include ("../../config/config.php");
include ("../../config/functions.php");
db_connect();

$warteliste = db_query("SELECT * FROM `system_mail-warteliste` WHERE `verschickt` = '0' ORDER BY `prioritaet` DESC LIMIT 50");
$anzahl = 0;
$kopf = '';
while ($daten = mysql_fetch_array($warteliste))
  	{
	$mail_verschickt = false;
	// Header erstellen
	$kopf = stripslashes($daten['kopf']).'\n';
	$kopf .= date("r").'\n';
	$kopf .= 'Content-Type: text/plain; charset=ISO-8859-1\n';
	$kopf .= 'Content-Transfer-Encoding: 8bit\n';
	$kopf .= 'MIME-Version: 1.0\n';
	$kopf .= 'X-Mailer: PHP/' . phpversion() . '\n';
	$kopf .= '\n';
	// Mail verschicken
	$mail_verschickt = mail(stripslashes($daten['empfaenger']),stripslashes($daten['betreff']),stripslashes($daten['nachricht']),$kopf);
	// Überprüfen ob Mail verschickt worden ist
	if ($mail_verschickt == true)
		{
		db_query("UPDATE `system_mail-warteliste` SET `verschickt` = '1', `verschickt-zeit` = ".time()." WHERE `id` = ".$daten['id']."");
		$anzahl += 1;
		}
	}
db_close();
die('Es wurden erfolgreich '.$anzahl.' Mails verschickt!');
?>


ich teste das jetzt mal und sag euch dann bescheid.

edit:
jetzt landet die mail zwar nicht mehr im spamordner, aber bei arcor kommt sie zb. gar nicht an.

mfg
seppl2000
 
Zuletzt bearbeitet:
Also ich hatte das gleiche Problem mal mit Hotmail, das Mails einfach nicht ankamen.

Ich kann dir dazu nur folgedens sagen:
1. beherzige den hier schon genannten Rat dirvon echten Mails, die von Outlook kommen, soviele Header wie möglich abzuschauen, das lässt die Anbieter eher denken es ist ne echte Mail
2. Outlook sendet spezielle Header, die sagen, dass die Mail von Outlook kommt, die hatten bei mir damals schon gereicht (es gab dazu mal nen Eintrag hier in der FAQ, aber den finde ich nicht mehr)
3. Sich als PHP-Mailer zu identifizieren wird wohl Arcor kaum besser gefallen, als was du vorher getan hast :roll:
4.Probier doch mal LasMirandas genannte Klasse aus
 
so, ich hab jetzt einen versuch gemacht:

PHP:
ignore_user_abort(true);
include ("../../config/config.php");
include ("../../config/functions.php");
db_connect();

$warteliste = db_query("SELECT * FROM `system_mail-warteliste` WHERE `verschickt` = '0' ORDER BY `prioritaet` DESC LIMIT 50");
$anzahl = 0;
$kopf = '';
while ($daten = mysql_fetch_array($warteliste))
  	{
	$mail_verschickt = false;
	// Header erstellen
	$kopf = stripslashes($daten['kopf']);
	//$kopf .= 'Auto-Submitted: auto-generated\n';
	//$kopf .= 'MIME-Version: 1.0\n';
	//$kopf .= 'Content-Type: text/plain; charset="ISO-8859-1"\n';
	//$kopf .= 'Content-Transfer-Encoding: 8bit\n';
	//$kopf .= 'X-Mailer: vBulletin Mail via PHP\n';
	//$kopf .= 'Date: '.date("r").'\n';
	//$kopf .= '\n';
	// Mail verschicken
	$mail_verschickt = mail(stripslashes($daten['empfaenger']),stripslashes($daten['betreff']),stripslashes($daten['nachricht']),$kopf);
	// Überprüfen ob Mail verschickt worden ist
	if ($mail_verschickt == true)
		{
		db_query("UPDATE `system_mail-warteliste` SET `verschickt` = '1', `verschickt-zeit` = ".time()." WHERE `id` = ".$daten['id']."");
		$anzahl += 1;
		}
	}
db_close();
die('Es wurden erfolgreich '.$anzahl.' Mails verschickt!');



so funktioniert es seltsamerweise überall, landet nicht im spamordner, kommt überall an.

weiß einer warum?

mfg
seppl2000