Skip to main content

Hallo,

Via php verstuur ik e-mails met html opmaak en afgelopen zomer 2019 ging dat prima naar kpnplanet.nl accounts. Maar nu wordt de header informatie met de html opmaak niet meer herkend. Ik verstuur de e-mails als volgt in php en dat was eerst goed:

$subject = 'Onderwerp'; $message = "<html>                        <body>                              Tekst                         </body>                     </html>"; $headers = 'From: *l' . "\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; $send = mail ($EmailNaar, $subject, $message, $headers);   Nu werkt de "\r\n" niet meer bij kpnplanet, wel bij andere mailproviders. Wat moet dit tegenwoordig zijn, bij g-mail moet dit "\n” zijn, maar dat werkt ook niet bij kpnplanet.

*Admin: mailadres uit het bericht verwijderd i.v.m. privacy.

Ha @Dimitry Rust, welkom! Dit is een hele goede vraag, waar ik het antwoord niet op heb. Maar ik ga wel m'n best voor je doen om erachter te komen. Zodra ik meer weet, kom ik er bij je op terug! 


Ik heb inmiddels een respons van mijn collega: 

 

De MIME message die wordt verstuurd is niet RFC-compliant. Dit komt omdat in de BODY van de email als EOL (end of line) character soms alleen <CR> wordt gebruikt i.p.v. de verplichte sequence <CR><LF>.  Zie https://tools.ietf.org/html/rfc2045#section-2.10

 

Kan je hiermee uit de voeten? Als je nog vragen hebt, hoor ik het graag van je. 

 


Hoi @Dimitry Rust ,

Volgens mij zou het nog steeds wel met die karakters moeten werken, al valt me wel op dat je de headers wat apart samenstelt. Per regel een deel in double quotes, en een deel in single quotes, gescheiden door een punt. Waarom niet gewoon:

$headers .= "MIME-Version: 1.0\r\n";

ipv:

$headers .= 'MIME-Version: 1.0' . "\r\n";

In een tooltje wat ik hier gebruik op de afdeling om mails naar klanten te sturen pas ik het ook gewoon nog zo toe, en alles lijkt daarin nog prima te werken.

 

 $headers = "From: KPN Abuseteam <abuse@kpn.com>\r\n";
 $headers .= "MIME-Version: 1.0\r\n";
 $headers .= "Content-Type: text/html; charset=UTF-8\r\n";

 $message = $kpnmailtop;
 $message .= $content;
 $message .= $kpnmailbottom;

 mail($email,$subject,$message,$headers,"-fabuse@kpn.com");

 


Ik gebruik phpmailer daarvoor. Die regelt dat volgens mij zelf. Dat van die headers.


Hoi Raymondt en Nick83,

 

Ik heb de headers nu opgebouwd zoals jullie ook doen door \r\n er gelijk achter te zetten. Maar het haalt niets uit. Aangezien ik voorlopig geen e-mails meer vanuit PHP hoef te versturen laat ik het nu maar zitten. In KPN webmail ziet het er wel goed uit, dus het lijkt me op zich dus wel goed. Maar waarom Outlook niet in de gaten heeft dat het een html-opmaak mailtje is, is me nog altijd een raadsel, maar goed.

Verder weet ik niet hoe ik op mijn Synology NAS PHPmailer zou moeten installeren. Dat lijkt me overigens wel een mooie toevoeging aan PHP als je moet e-mailen.

Bedankt voor jullie reacties,

Dimitry Rust.


Hoi Dimitry,

Vreemd dat het niets uithaalt, maar dat gezegd hebbende, html mail uitsturen blijft altijd tricky, omdat je bepaalde zaken op verschillende manieren aan kan pakken, en geen van die standaarden wordt altijd door elke client ondersteund. Phpmailer is leuk, en flink uitgebreid, maar je kunt je afvragen of het de moeite waard is, sinds je het meeste eigenlijk al ingericht hebt zoals het zou moeten. Ik denk dan niet dat phpmailer veel gaat toevoegen, dus of je die moeite moet doen?

 


Hoi Raymondt,

 

Phpmailer ga ik inderdaad niet installeren, zoals gezegd hoef ik nu geen e-mails meer te versturen. Wel heb ik nog het php-commando

$message = wordwrap($message, 70," <br>"); toegevoegd. Zo moeten de regeleindes <CR><LF> er goed in komen. Bedankt in ieder geval voor je ondersteuning.

Ik heb eigenlijk altijd al phpmailer gebruikt, en nog nooit problemen gehad dat de html niet of verkeerd werd weer gegeven. Dus misschien voegd het toch iets toe :wink: