PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Multipart Mails mit PHP5



Floezen
11.06.08, 09:23
Hallo,

vielleicht gibt es einen günstigeren Ort für meine Frage als hier, aber diesen Ort habe ich leider noch nicht gefunden...

Wir verschicken seit einigen Jahren regelmässig unseren Newsletter als multipart Mail ohne Probleme. Je nach Client konnte jeder entweder die HTML- oder Text-formatierte Mail lesen.

Vor kurzem sind wir auf einen neuen Server umgestiegen.
Von Debian mit PHP 4 und Apache 1.3 auf Suse Linux 10.1 mit PHP 5 und Apache 2.

Seit diesem Umstieg beschweren sich einige Nutzer über die Formatierung der Mails. Scheinbar werden nun sowohl HTML- als auch der Text-Teil gleichzeitig gezeigt, was vorallem im HTML-Teil zu einer kaum lesbaren Mail wird.

Programme wie Apple Mail oder Thunderbird zeigen die Mails korrekt an.
Eudora und Outlook 2000 hingegen können scheinbar zwischen HTML und Text nicht unterscheiden.

Der Newsletter wird über ein PHP-Script erstellt.

Hier ein auf das Wesentliche gekürzter Newsletter:


Received: (qmail 30574 invoked by uid 30); 3 Jun 2008 22:53:21 +0200
Date: 3 Jun 2008 22:53:21 +0200
To: me@mydomain.net
Subject: server.net Newsletter #65
Message-ID:<10001212526501.419uid3newsletter@server.net>
From: server.net <newsletter@server.net>
X-Mailer: PHP/5.1.2

MIME-Version: 1.0

Content-Type: multipart/mixed; boundary="msg_border"

Content-Transfer-Encoding: 8bit



This is a multi-part message in MIME format.
--msg_border
Content-Type: multipart/alternative; boundary="alt_border"

--alt_border
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Hallo xyz,

__________________________________________________ ______________________________
Sie erhalten den server.net Newsletter #65

__________________________________________________ ______________________________






================================================== ==============================
13 neue Veranstaltungen für die nächsten 31 Tage:
================================================== ==============================



[Berlin - Fr. 13.06.2008 bis Fr. 13.06.2008]
"Lichtblick 4D * Architekturtag 2008 *"

Autodesk Revit Architecture 2009 * Autodesk 3ds Max Design 2009 * MuM-Baukostenplanung * Gebäudeplanung und Architekturvisualisierung der Spitzenklas[...]
Mehr unter:
http://www.server.net/modules.php?eid=1433
__________________________________________________ ______________________________




--alt_border
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>server.net | Forum</title>
<style type="text/css">
.box { position: absolute; width: 500px; margin-left: -250px; margin-top: 10px; left: 50%; border-left: 1px solid #35342F; border-right: 1px solid #35342f; border: 1px solid #35342f; }.logobox { background-color: #FFFFFF; width: 490px; height: 32px; padding: 5px 5px 5px 5px;}.contentbox { background-color: #FFFFFF; width: 490px; padding: 5px 5px 5px 5px; border-top: 1px solid #35342f;}.orangebox { width: 490px; height: 20px; background-color: #E47B00; padding: 5px 5px 0px 5px; border-top: 1px solid #35342f; color: #FFFFFF;}.footbox { background-color: #E47B00; width: 490px; height: 15px; padding: 5px 5px 5px 5px; border-top: 1px solid #35342f; font-size: 10px; text-align: center;}span.left { float: left; text-align: left; }span.right { float: right; text-align: right; }.left { float: left; text-align: left; }.right { float: right; text-align: right; }.small { font-size: 10px; }.medium { font-size: 11px; }.normal { font-size: 12px; }.large { font-size: 13px; }.extralarge { font-size: 14px; }.break {worword-break-inside: hyphenate;}.center { text-align: center; }.alert { color: #FF0000; }body { background-color: #ffffff; margin: 0; font-family: Helvetica, Arial, san-serif; font-size: 12px; color: #35342f; }.linie { width: 100%; border-bottom: 1px solid #afab98; }.dotline { width: 100%; border-bottom: 1px dotted #afab98; }.line_dark { width: 100%; border-bottom: 1px solid #35342f; }.path { text-align: right; font-size: 11px; font-weight: 600; width: 100%; height: 23px; border-top: 1px solid #afab98; border-bottom: 1px solid #afab98; }div.path h2 {font-size: 11px; margin-bottom: 5px; margin-top: 5px; }div.form {clear: both; padding-top: 5px;}.formlabel {float: left; width: 130px; text-align: left; }.forminput {float: right; width: 350px; text-align: left;}div.imglist {clear: both;padding-top: 5px;}div.imglist {clear: both; padding-top: 5px;}.imgthumb {float: left; width: 40px; text-align: left;}.imgdetail {float: right; width: 410px; text-align: left;}div.imglist span.imgthumb img {margin-top: 15px; margin-bottom: 0px;}h1 { font-size: 14px; font-weight: 600; /*font-variant: small-caps;*/ text-transform: uppercase; margin-top: 0px; margin-bottom: 20px; }h1 img { vertical-align: -8px; margin-right: 5px; }h1 a:hover { text-decoration: none; }h2 { font-size: 14px; font-weight: 600; margin-bottom: 30px; }h3 { font-size: 12px; font-weight: 600; margin-top: 15px; margin-bottom: 0px; }h3 img { vertical-align: middle; margin-right: 5px; }h3 ul { margin-left: -24px; list-style-image: url(/images/ul.gif); list-style-type: circle;}h4 { font-size: 10px; font-weight: 600; font-style: italic; margin-top: 0px; margin-bottom: 0px; }h5 { font-size: 10px; font-weight: 600; font-style: italic; margin-top: 0px; margin-bottom: 0px; }p { margin-bottom: 0px; margin-top: 0px; }a:link { color: #E47B00; text-decoration: none; }a:active { color: #EFAE63; text-decoration: none; }a:visited { color: #E47B00; text-decoration: none; }a:hover { color: #EFAE63; text-decoration: underline; }div.footbox a:link { color: #35342f; text-decoration: none; }div.footbox a:visited { color: #35342f; text-decoration: none; }div.footbox a:active {color: #35342f; text-decoration: none; }div.footbox a:hover { color: #35342f; text-decoration: underline;}.imgmiddle {vertical-align: middle; margin-right: 5px;}</style></head><body>
<div class="box">

<div class="logobox">
<a href="http://www.server.net"><img src="http://www.server.net/server.gif" border="0" /></a>
</div>
<div class="orangebox"><span class="right"><h1>Newsletter #65</h1></span></div>
<div class="contentbox">
<br />Hallo xyz,<br /><br />Sie erhalten den server.net Newsletter #65

<!-- start upgtodate --><br /><div class="path"><a name="Events" id="Events"></a><h2> 13 neue Veranstaltungen für die nächsten 31 Tage</h2></div><br /><br /><span class="imgmiddle"><img src="http://www.server.net/images/ul.gif" border="0" /> <b>Berlin</b></span>Fr. 13.06.2008 bis Fr. 13.06.2008<br /><h3><a href="http://www.server.net/modules.php?eid=1433">Lichtblick 4D * Architekturtag 2008 *</a></h3><br />Autodesk Revit Architecture 2009 * Autodesk 3ds Max Design 2009 * MuM-Baukostenplanung * Gebäudeplanung und Architekturvisualisierung der Spitzenklas<a href="http://www.server.net/modules.php?eid=1433">[...]</a><br /><br /><div class="dotline"></div><br /><br /><br /></span></div></div><br /></body></html>



--alt_border--
--msg_border--


Hat jemand eine Idee, was an der Mail nicht in Ordnung ist?
Vermutlich hat das Problem etwas mit der Umstellung auf PHP5 zu tun, anders kann ich mir das nicht erklären. - Nur was könnte das sein???

Grüsse
Flözen

marce
11.06.08, 09:26
(1) Suse 10.1 ist eine denkbar schlechte Idee als Serverdistribution. Seit 30.05. gibt's dafür keine Updates mehr.

(2) mit dem php-Problem bist Du bei mrunix vermutlich besser aufgehoben.

Floezen
11.06.08, 09:33
(2) mit dem php-Problem bist Du bei mrunix vermutlich besser aufgehoben.


Die Frage ist, ob es überhaupt ein PHP Problem ist...
PHP Programmierer kennen sich leider nicht immer mit den Feinheiten von Emails aus.
Ein Email-Forum wäre wohl am geeignetsten, aber da habe ich noch nichts sinnvolles gefunden.

marce
11.06.08, 09:40
macht doch einfach mal ein Diff zwischen einer vom alten System und einer vom neuen System erstellten Mail.

UzumakiNaruto
11.06.08, 09:42
der PHP-Quelltext wäre super, dann könnte man dort mal gucken ob der fehler dort liegt.

auch wäre es super zu erfahren welche PHP Version genau benutzt wurde

http://de.php.net/manual/de/function.mail.php


Version Beschreibung
4.3.0 (nur Windows) Alle benutzerdefinierten Header wie (From, Cc, Bcc und Date) werden unterstützt und sind nicht abhängig von der Groß-/Kleinschreibung. (Da benutzerdefinierte Header nicht direkt vom MTA interpretiert werden, sondern von PHP geparst werden, unterstützte PHP < 4.3 nur den Cc-Header, das dort auch abhängig von der Groß-/Kleinschreibung war.
4.2.3 Der additional_parameters -Parameter ist im safe_mode deaktiviert; mail() gibt eine Warnung aus und gibt FALSE zurück, wenn Sie den Parameter trotzdem verwenden.
4.0.5 Der additional_parameters -Parameter wurde hinzugefügt.

Roger Wilco
11.06.08, 12:03
Die Leerzeilen zwischen den Headerzeilen deiner Mail müssen entfernt werden.

Warum generiert ihr die E-Mails eigentlich nicht einfach mit PEAR::Mail_MIME und verschickt dann mit PEAR::Mail? Man muss das Rad ja nicht immer neu erfinden...

EDIT: Zeichen, Zeilen, alles das selbe... :ugly:

Floezen
11.06.08, 14:37
OK, habs. Der Tipp mit den Leerzeichen war ganz gut. Zwar nicht das Problem, aber die richtige Richtung.

Es waren die Leerzeilen zwischen

MIME-Version: 1.0

Content-Type: multipart/mixed; boundary="msg_border"

Content-Transfer-Encoding: 8bit

die dadurch entstanden sind, dass ich die Zeilen mit \r\n beendet habe...

Trotzdem Danke :o)

Flözen

UzumakiNaruto
12.06.08, 10:45
Hinweis: Wenn E-Mails nicht ankommen, versuchen Sie bitte, nur das LF-Zeichen (\n) zu verwenden. Einige UNIX-MTAs (mail transfer agents) ersetzen leider LF durch CRLF (\r\n) automatisch (wodurch das CR-Zeichen verdoppelt wird, wenn CRLF verwendet wird). Dies sollte aber nur in Ausnahmefällen geschehen, da es gegen » RFC 2822 verstößt.

nachzulesen auf
http://de.php.net/manual/de/function.mail.php

wie oben schon beschrieben ;)

deswegen wollte ich ja die genaue php version wissen, da sich dort was getan hat, beim übergang von php4 zu php5 ;)