Problem mit php mail()-Funktion

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

ralftopas

Benutzer
Registriert
04. Feb. 2009
Beiträge
84
Reaktionspunkte
0
Punkte
0
Salü,

seit einiger Zeit habe ich ein Problem mit dem mail Befehl in meinen PHP-Scripten.

Ein einfacher aufruf des Befehls wie folgt:
PHP:
mail('blablabla@gmx.net','test','test');
versendet zwar eine eMail, allerdings bleibt Betreff und Body leer.

"Kompliziertere Aufrufe" mit Headers führen dazu, dass das Script sich aufhängt.

Zum Bsp:
PHP:
	$boundary = strtoupper(md5(uniqid(time())));
	$mail_header  = "From:Synology Server 207+ <$from>\n";
	$mail_header .= "MIME-Version: 1.0";
	$mail_header .= "\nContent-Type: multipart/mixed; boundary=$boundary";
	$mail_header .= "\n\nThis is a multi-part message in MIME format  --  Dies ist eine mehrteilige Nachricht im MIME-Format";
	$mail_header .= "\n--$boundary";
	$mail_header .= "\nContent-Type: text/plain";
	$mail_header .= "\nContent-Transfer-Encoding: 8bit";
	$mail_header .= "\n\n$message";
	$file_content = fread(fopen($file,"r"),filesize($file));
	$file_content = chunk_split(base64_encode($file_content));
	$mail_header .= "\n--$boundary";
	$mail_header .= "\nContent-Type: application/octetstream; name=\"$file_name\"";
	$mail_header .= "\nContent-Transfer-Encoding: base64";
	$mail_header .= "\nContent-Disposition: attachment; filename=\"$file_name\"";
	$mail_header .= "\n\n$file_content";
	$mail_header .= "\n--$boundary--"

Jemand eine Idee?

Bin mir nicht sicher, ob der Fehler in zeitlichem Zusammenhang damit steht, dass ich manuell ein DNS Server eingetragen habe.
Das ist das einzige was mir einfällt, was ich in letzter Zeit an der NAS geändert habe.
 
Afaik brauchst du \r\n und nicht nur \n
 
Nee,

hab zig codebeispiele gefunden, in denen nur \n genutzt wird.
So wie es unten steht, ging es ja auch mal...

Wenn ich testweise in den Code folgendes einbaue:
PHP:
echo "BLA";
flush();

sehe ich, dass das Script komplett durchlaufen wird.
Hängen bleibt es dann nur am mail()-Befehl.
Ich weiß nicht warum.

Ändere ich den
PHP:
mail($to,"Betreffzeile",$message,$mail_header);
zu:
PHP:
mail($to,"Betreffzeile",$message);
wird eine Mail generiert, allerdings ohne Body und Subject.

Sehr strange...
 
PHP:
mail($Sendto, $Subject, stripslashes($Msg), "From: \"".$From."\" <".$From.">\n".'Content-Type: text/html; charset="iso-8859-1"\n');

läuft bei mir (AdminTool)

Itari
 
Dein Code geht Itari.
Leider sende ich damit aber keine Attachments.
Habe jetzt noch mal etwas rumprobiert.
PHP:
$file = 'datei.pdf';
$grenze="grenzlinie";
$name_des_bildes=$file;
$headers ="MIME-Version: 1.0\r\n";
$headers.="From: test@gmx.net\n";
$headers.="Content-Type: multipart/mixed;\n\tboundary=$grenze\n";
$botschaft ="\n--$grenze\n";
$botschaft.="Content-transfer-encoding: 7BIT\r\n";
$botschaft.="Content-type: text/plain\n\n";
$botschaft.= "testtext bla blubb. \n";
$botschaft.="\n\n";
$botschaft.="\n--$grenze\n";
$botschaft.="Content-Type: application/octetstream;\n\tname=$name_des_bildes\n";
$botschaft.="Content-Transfer-Encoding: base64\n";
$botschaft.="Content-Disposition: attachment;\n\tfilename=$name_des_bildes\n\n";
$zeiger_auf_datei=fopen("$file","rb");
$inhalt_der_datei=fread($zeiger_auf_datei,filesize("$file"));
fclose($zeiger_auf_datei);
$inhalt_der_datei=chunk_split(base64_encode($inhalt_der_datei));
$botschaft.=$inhalt_der_datei;
$botschaft.="\n\n";
$botschaft.="--$grenze";
echo $headers."<hr>";
echo $botschaft;
flush();
mail("empfaenger@gmx.net","test mit attachements",$botschaft,$headers);
print "email wurde versandt";


Wenn ich
PHP:
$botschaft.=$inhalt_der_datei;
auskommentiere, läuft das Script durch.
Ansonsten scheint es "festzuhängen" und läd und läd und läd....
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat