Hallo,
also, ich habe mich noch mal dieser Sache angenommen und habe mein erstes PHP-Script zum Laufen gebracht (bin ganz stolz).
Dein Skript läuft bei mir, allerdings habe ich ergoogelt, dass es tatsächlich vom interpretierenden Server abhängt, wie die Zeilenumbrüche interpretiert werden. Da werden bei manchem Server aus deinem '\r\n' schnell zwei Zeilenumbrüche. Diese zwei Zeilenumbrüche haben zur Folge ... , ach, das habe ich hier in dem Post ja schon zu oft beschrieben! DIESE ZWEI ZEILENUMBRÜCHE SIND DEIN PROBLEM!
Ich habe also dein Script in meiner Umgebung testen können. Es läuft und erzeugt bei mir keine zwei Leerzeilen, bei dir aber offensichtlich schon (sieht man ja in deinem Quelltext-Link). Wenn ich in meinem Skript noch einen Zeilenumbruch hinzufüge, erhalte ich das identische Ergebnis wie du!
Daher weiterhin mein Rat: Die Headerzeilen bitte nur mit '\n' umbrechen. Dann klappt es auch in jedem Client, der das geforderte darstellen kann, mit der Darstellung (weil diese dann valide, konform, richtig ist).
Dazu sage ich jetzt nichts mehr, bis du das nicht ausprobiert und mir von deinem Ergebnis berichtet hast.
Apropo valider HTML-Code: du hast aber noch andere "Probleme". HTML verwendet in seinen Tags keine Hochkommas, sondern Gänsefüßchen:
richtig: <img src="http://work.chaosdidi.de/assets/images/logo.png" class="img-responsive">
falsch: <img src='http://work.chaosdidi.de/assets/images/logo.png' class='img-responsive'>
Das heißt, du solltest dein Script dementsprechend korrigieren:
$to = $email;
$subject = "Ihre Registrierung auf ChaosDidi.de";
$message = '
<html>
<head>
<title>Ihre Registrierung auf ChaosDidi.de</title>
<link href="http://work.chaosdidi.de/assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">
</head>
<body>
<img src="http://work.chaosdidi.de/assets/images/logo.png" class="img-responsive">
<br><br>
Das Betriebssystem ist'.$os.' <br><br>
<p>
Vielen Dank für deine Registrierung auf ChaosDidi.de :)
<br><br>
Damit du dich nun auch Einloggen kannst, musst du erst deinen Account aktivieren. Klicke dafür auf den unten stehenden Link.<br>
<a href="http://chaosdidi.de/Activate/'.$activate_code.'">http://chaosdidi.de/Activate/'.$activate_code.'</a>
<br><br>
<b><u>Deine Logindaten:</u></b><br>
<b>Benutzername:</b> '.$username.'<br>
<b>Passwort:</b> '.$pass2.'
<br><br>
Viel Spaß wünscht dir,<br>
Das ChaosDidi Team
</p>
</body>
</html>';
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0"."\n";
$headers .= "Content-type:text/html;charset=UTF-8"."\n";
// More headers
$headers .= 'From: <no-reply@chaosdidi.de>'."\n";
$result = mail($to,$subject,$message,$headers);
Alles anzeigen
Wie valide HTML-E-Mails aufgebaut sind, weiß ich nicht (und interessiert mich auch nicht). Ich gehe aber davon aus, dass sie eigentlich aus zwei Teilen bestehen müssen, dem Plain-Text-Teil und dem HTML-Teil. Da musst du dich wo anders schlau machen, oder vielleicht kann mrb was dazu sagen, er hat das ja bereits angedeutet, dass bei dir der Plain-Text-Teil fehlt.
Grüße, Ulrich