<?php

$oMember = mysql_query("SELECT email FROM gebruikers");
while ($aMember = mysql_fetch_assoc($oMember)) {

$tomail = $aMember['email'];
$from = "Bedrijf";
$frommail = "[email protected]";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "To: " . $aMember['email'] . " <" . $aMember['email'] . ">\r\n";
$headers .= "From: " . $from . " <" . $frommail . ">\r\n";
$message = "Geachte Meneer/Mevrouw,\n\n".$_POST['mailing']."\n\nMet vriendelijke groet,\nBedrijf\n\nLet op, dit is geen spam, u ontvangt dit bericht omdat u bent ingeschreven op onze website met de gebruikersnaam: ".$aMember['login'].".";
$subject = $_POST['titel'];

if (@mail($tomail, $subject, $message, $headers))
$iGoed++;
else
$iFout++;

?>

Dit is mijn script voor de nieuwsbrief, toch wordt de gehele tekst in een lange
sliert weergeven in de inbox van de ontvangers, heb het getest met clients
zoals Gmail of Hotmail, maar het is altijd een lange sliert zonder enters...?!

Wat gaat er fout?
Dat komt omdat Gmail en Hotmail (zoals velen) gebruik maken van HTML emails. Je moet dus ipv \n\n gebruik maken van <br /> of <p>

Let op dat je bij het versturen van email 2 berichten aanmaakt. Dus 1 HTML bericht en 1 plain tekst bericht (voor als de mail client geen HTML berichten ondersteunt).
Deze 2 berichten verstuur je natuurlijk in 1 email (met 2 aparte headers).

Een goed mailprogramma is bijvoorbeeld phpmailer.
Sowieso geef jij aan dat het in html is (Content-Type: text/html), dus waarom gebruik jij dan geen html?
Klinkt inderdaad best logisch, maar hoe doe ik het dan zonder phpmailer bijvoorbeeld met die plain text en html.

Ik kan van tevoren toch niet kijken of de client van de gebruiker
HTML mails accepteert of niet?
Zet er dan iets bij van: Kunt u deze mail niet lezen? Klik hier. En dat ze dan naar de versie die op je site staat gaan. Zo zie je dat heel vaak.
Inderdaad, je hebt gelijk.

Bedankt voor jullie hulp.
Ricolo schreef op 15.08.2008 14:43
Klinkt inderdaad best logisch, maar hoe doe ik het dan zonder phpmailer bijvoorbeeld met die plain text en html.

Ik kan van tevoren toch niet kijken of de client van de gebruiker
HTML mails accepteert of niet?


Je stuurt een mail met 2 headers. Hieronder een voorbeeld.
Bron: http://www.daniweb.com/forums/thread2959.html

<?php
$boundary = "nextPart";

$headers = "FROM: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/alternative; boundary = $boundary\r\n\r\n";
$headers .= "This is a MIME encoded message.\r\n\r\n";

//text version
$headers .= "--$boundary\n
Content-Type: text/plain; charset=ISO_8859-1\r\n
Content-Transfer_Encoding: 7bit\r\n\r\n";
$headers .= "This is the plain version\r\n\r\n";

// html version
$headers .= "--$boundary\r\n
Content-Type: text/html; charset=ISO_8859-1\r\n
Content-Transfer_Encoding: 7bit\r\n\r\n";
$headers .= "This is the <b>HTML</b> version";

mail("[email protected]", "An HTML Message", "", $headers);
?>

edit
Dus er wordt eerst geprobeerd het HTML bericht te tonen. Wordt dit niet geaccepteerd, dan wordt het plain bericht getoond.

Reageren