[PHP] HTML mail komt niet meer als HTML mail aan.

Pagina: 1
Acties:
  • 131 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • WiNlUx
  • Registratie: April 2002
  • Laatst online: 12-09-2023
Hallo.

Ik ben bezig met een mailform script. Deze host ik op dit moment thuis op mijn server. Nu is het zo wanneer de mail naar mij wordt verstuurd, dat ik geen HTML berichtjes krijgt, maar gewoon PLAIN TEXT, met alle headers erin. Doe ik het via een andere webserver, dan gaat het perfect en krijg ik wel alles goed binnen. Zo ziet de mail eruit als ie niet HTML is:

Date: Wed, 18 Jan 2006 12

X-Priority: 2 (High)

X-Msmail-Priority: High

x-gfi-me-from: Dankers Special Case Products BV <xxxxxxx@dankers-cases.nl>

X-Sender: xxxxxxxxx@dankers-cases.nl

Reply-To: Dankers Special Case Products <xxxxxxxx@dankers-cases.nl>

Mime-Version: 1.0

Content-Type: multipart/mixed; boundary="myMailBoundary(my43ce20c449722)"

Message-Id: <20060118110436.5D3D9170B31@webserver.meidoornlaan.net>
Return-Path: www@webserver.meidoornlaan.net
X-OriginalArrivalTime: 18 Jan 2006 11:22:46.0652 (UTC) FILETIME=[81F603C0:01C61C21]


If you are reading this, it means that your e-mail client

does not support MIME. Please upgrade your e-mail client

to one that supports MIME.

--myMailBoundary(my43ce20c449722)

Content-Type: text/html; charset="iso-8859-1"

Content-Transfer-Encoding: base64


Terwijl, als ik via een andere webserver verzend, de mail er zo uit ziet:

Afbeeldingslocatie: http://www.huibdankers.nl/tweakers/phpmail.jpg

Ik heb in de configuratie van Apache gezocht, in PHP.ini, op GoT maar alles wat ik probeer, ik krijg er geen fatsoenlijke HTML mail uit!

Mijn webserver config: FreeBSD 5.4 met PHP4.4.2 en Apache 2.0.55.

op http://www.huibdankers.nl/phpinfo.php zie je verdere config. Ik kom er niet meer uit.

Wie kan mij op weg helpen?

[ Voor 3% gewijzigd door WiNlUx op 18-01-2006 12:37 ]


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

De function header() heeft een grote rewrite ondergaan in PHP 4.4.2, de kans is groot dat het daar inligt. Maak je misschien meerdere headers aan met slechts 1 function call?
...
Prevent header injection by limiting each header to a single line.
...

[ Voor 25% gewijzigd door AtleX op 18-01-2006 12:38 ]


Acties:
  • 0 Henk 'm!

  • WiNlUx
  • Registratie: April 2002
  • Laatst online: 12-09-2023
AtleX schreef op woensdag 18 januari 2006 @ 12:37:
De function header() heeft een grote rewrite ondergaan in PHP 4.4.2, de kans is groot dat het daar inligt. Maak je misschien meerdere headers aan met slechts 1 function call?


[...]
Dat moet ik bekijken, omdat ik namelijk de PHP class zelf niet heb geschreven. Ik ga nu even kijken.

Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 13:37

pietje63

RTFM

Als ik het zo zie dan eindigen de regels in de header waarschijnlijk op \r\n, waarschijnlijk is hier \n genoeg.

De tekst die jij hebt staan heeft namelijk tussen elke header regel een enter gezien, veel mail programma's zien dat als einde headers..

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • poepkop
  • Registratie: Juni 2005
  • Laatst online: 19-04-2021
Als je de php-code even post? :)

Athlon X8 3,6ghz 15000+ | 4 x 4GB PC 21000 | 2 x 4TB... < das pas patsen :-)


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

pietje63 schreef op woensdag 18 januari 2006 @ 12:42:
Als ik het zo zie dan eindigen de regels in de header waarschijnlijk op \r\n, waarschijnlijk is hier \n genoeg.

De tekst die jij hebt staan heeft namelijk tussen elke header regel een enter gezien, veel mail programma's zien dat als einde headers..
Dat klopt, normaal kan je headers scheiden met zowel \n als \r\n, en is \r\n\r\n een markering voor het einde van de regels. Maar als je een Windows server draait wil het nog wel eens fout gaan, aangezien een newline op een Windows machine alleen \n is kan een server \r\n zien als een dubbele newline en dus het einde van de headers.

Acties:
  • 0 Henk 'm!

  • WiNlUx
  • Registratie: April 2002
  • Laatst online: 12-09-2023
De class is de downloaden op http://www.huibdankers.nl/mailer.class.php.txt

Er wordt zoals het er nu uit ziet maar 1 functie gemaakt voor die header.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
AtleX schreef op woensdag 18 januari 2006 @ 12:48:
[...]


Dat klopt, normaal kan je headers scheiden met zowel \n als \r\n, en is \r\n\r\n een markering voor het einde van de regels. Maar als je een Windows server draait wil het nog wel eens fout gaan, aangezien een newline op een Windows machine alleen \n is kan een server \r\n zien als een dubbele newline en dus het einde van de headers.
In RFC's staat altijd 'CRLF' oftewel \r\n en niet 'kies de newline die je voor het huidige platform wel leuk lijkt'. :P
Mail moet gewoon werken, ongeacht het platform van de ontvanger. CRLF aan het einde van een header en CRLFCRLF aan het einde van de laatste header.

{signature}


Acties:
  • 0 Henk 'm!

  • WiNlUx
  • Registratie: April 2002
  • Laatst online: 12-09-2023
Ik heb het opgelost!

Pietje heeft mij op het goede spoor gezet. In de mail class staat het volgende:

code:
1
2
3
        // always use \r\n in your mail and to split the headers! 
        if( !defined('NL') ) { 
            define('NL', "\r\n");


Van "\r\n"

heb ik

"\n"

gemaakt.

Nu werkt het perfect! Nu wil ik weten WAAROM het fout ging, omdat alles in PHP versie 4.4.1 het wél goed deed!

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bekijk aub eens de letterlijk gestuurde mail en zoek naar de \r (dec: 13) en \n (dec: 10) karakters . Met je huidige 'pleistermethode' ben je de definitie van CRLF nogal aan het verkrachten.

{signature}

Pagina: 1