Einzelnen Beitrag anzeigen
  #1  
Alt 05.04.2005, 04:13:18
Scope Scope ist offline
Anfänger
 
Registriert seit: Apr 2002
Ort: Deutschland
Alter: 41
Beiträge: 6
Problemme mit mail()

Hallo,

für einen Newsletter verwende ich mail() (logisch :). In testläufen, musste ich feststellen, dass mein Programm nicht fehlerfrei aber auch nicht fehlerhaft läuft.

So sieht das Programm (auszug) aus:

PHP-Code:
elseif ($_GET['do'] == 'send') {
  if (!isset(
$_POST['s'])) {
    echo 
'<form action="newsletter.php?do=send" method="post" style="margin-top: 0px; margin-bottom: 0px;"><textarea name="text" cols="156" rows="20" class="formfield"></textarea><br/><input type="submit" name="s" value="Vorschau" class="button" /> <input type="submit" name="s" value="Newsletter verschicken" class="button" /></form><p>Der Ausdruck :NAME: wird durch den, in der Datenbank vorhandenen, Namen des Empfängers ersetzt.</p>';
  }
  elseif (
$_POST['s'] == 'Vorschau') {
    echo 
'<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#000000" width="800"><tr><td>';
    @include (
'../../library/newsletter/header.html');
    echo 
"<br>";
    echo 
'<div style="font-family: Arial; font-size: 12px;">'.nl2br(stripslashes($_POST['text'])).'</div>';
    echo 
"<br>";
    @include (
'../../library/newsletter/footer.html');
    echo 
'</td></tr></table><br/><br/>(Zum Editieren bzw. Versenden <a href="javascript:history.back();">zurück</a> gehen)';
  }
  elseif (
$_POST['s'] == 'Newsletter verschicken') {
    
set_time_limit(300);
    
$adressen mysql_query('SELECT `email`, `name` FROM '.$newsletter_prefix.'newsletter ');
    
$head = @file_get_contents('../../library/newsletter/header.html');
    
$foot = @file_get_contents('../../library/newsletter/footer.html');
    
$text1 stripslashes($_POST['text']);
    
$text1 str_replace("r"''$text1);
    
$text1 '<div style="font-family: Arial; font-size: 12px;">'.nl2br($text1).'</div>';
    echo 
'<!-- '$i 0;
    while (
$data mysql_fetch_array($adressenMYSQL_ASSOC)) {
      
$text = (empty($data['name'])) ? str_replace(':NAME:''Unbekannt'$text1) : str_replace(':NAME:'$data['name'], $text1);
      
mail($data['email'], $newsletter_name.date(" M Y"),$head.$text.'<br /><div style="font-family: Arial; font-size: 12px;"><hr width="100%" size="1" color="#000000" align="center" noshade>Um den Newsletter abzubestellen <a href="'.$def_webseite.'">'.$def_webseite.'</a> besuchen, Emailadresse eingeben und Austragen klicken.'.$foot"MIME-Version: 1.0rnContent-type: text/html; charset=iso-8859-1rnFrom: ".$newsletter_name." <".$def_email.">rn");
      
$i++;
      echo 
"$i: $data[email], ";
    }
    echo 
'-->';
    echo 
'Newsletter verschickt.';
  }

Wichtig ist eigentlich nur die Zeile:
PHP-Code:
mail($data['email'], $newsletter_name.date(" M Y"),$head.$text.'<br /><div style="font-family: Arial; font-size: 12px;"><hr width="100%" size="1" color="#000000" align="center" noshade>Um den Newsletter abzubestellen <a href="'.$def_webseite.'">'.$def_webseite.'</a> besuchen, Emailadresse eingeben und Austragen klicken.'.$foot"MIME-Version: 1.0rnContent-type: text/html; charset=iso-8859-1rnFrom: ".$newsletter_name." <".$def_email.">rn"); 
In der Datenbank habe ich 2 verschiedene Emails eingetragen, dessen beide male ich der empfänger bin. Auf der einen Adresse kommt die Email so wie sie soll an. In der anderen kommt sie mit als Sourcecode an:

HTML-Code:
Content-type: text/html; charset=iso-8859-1

From: Development <[... ... ...]>


<div align="center">
<table border="0" bordercolor="#000000" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%">
  <tr>
    <td width="100%" align="right"><img src="http://[... ... ...]/library/newsletter/logo.jpg" border="0"></td>
  </tr>
</table>
</div><div style="font-family: Arial; font-size: 12px;">test</div><br /><div style="font-family: Arial; font-size: 12px;"><hr width="100%" size="1" color="#000000" align="center" noshade>Um den Newsletter abzubestellen <a href="http://[... ... ...]">http://[... ... ...]</a> besuchen, Emailadresse eingeben und Austragen klicken.<hr width="100%" size="1" color="#000000" align="center" noshade>
Auffälig an der Email ist, dass der "From:" fehlt. Ich habs also anschliesend (laut php.net) es mit
PHP-Code:
mail($data['email'], $newsletter_name.date(" M Y"),$head.$text.'<br /><div style="font-family: Arial; font-size: 12px;"><hr width="100%" size="1" color="#000000" align="center" noshade>Um den Newsletter abzubestellen <a href="'.$def_webseite.'">'.$def_webseite.'</a> besuchen, Emailadresse eingeben und Austragen klicken.'.$foot"MIME-Version: 1.0rnContent-type: text/html; charset=iso-8859-1rn"From".$newsletter_name." <".$def_email.">"rn"); 
versucht ("From: ".$newsletter_name." <".$def_email.">") und das Ergebniss war, das ich die Emails von annoymus bekommen habe, der Inhalt (eines richtig, eines in sourcecode) nicht geändert hat.

Hat jemand vielleicht einen Tipp was ich falsch mache?

Geändert von Scope (23.06.2009 um 21:40:25 Uhr)
Mit Zitat antworten