• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

HTML E-Mail fehlerhaft

Status
Für weitere Antworten geschlossen.

Jarell

Neues Mitglied
Hallöchen

Wollte mein Problem auch noch mal in diesem Forum hier ansprechen.

Ich habe jetzt ne halbe Ewigkeit nach einer Lösung für das Problem gesucht,… aber leider ohne Erfolg.

Ich habe eine Seite, auf der eine paar Daten erfass und am Ende per HTML E-Mail verschickt werden.

das Verschicken geschieht ganz normal via

mail($to, $subject, "", $message);

Das Problem ist nun, dass die E-Mails leider fehlerhaft ankommen.

An willkürlichen Positionen in der E-Mail tauchen auf einmal Ausrufezeichen gefolgt von einem Leerzeichen /(bzw. Zeilenumbruch) auf.

Das sieht dann z.B. so aus:

! LS/OLD statt LS/OLD
New S! W stack: statt New SW stack:

Ich habe den Quellcode der E-Mail mit http://validator.de.selfhtml.org/validate überprüft. Außer diesem angesprochenen Problem mit dem Ausrufezeichen werden keine weiteren Probleme aufgelistet.

Vor allem ist der Quellcode ja vor dem versenden komplett ok. Keine Ausrufezeichen nichts,…. nur die E-Mail ist dann so komisch…

habe schon geraten bekommen, dass ich die Zeichensatzdefinition der Seiten auf utf-8 ändern soll. leider ohne Erfolg.

Was kann das sein ? Ich komm da echt ned mehr weiter…

Bin über jede Hilfe dankbar. Falls ihr noch weitere Infos braucht, einfach sagen.


ps. hier noch ein Beispiel:

Schließendes div-Element wurde nicht gefunden, obwohl dies zwingend notwendig ist.
…<td><div class=tabletxt1><b>test
Zeichen "!" in einem Endtag nicht erlaubt
<td><div class=tabletxt1><b>test</b></di!
Endtag `DI` zu einem nicht vorhandenen Starttag gefunden.
<td><div class=tabletxt1><b>test</b></di!
Zeicheninhalt ist hier nicht erlaubt
v></td><
/tr><tr><td><div class…
 
Werbung:
Code:
</di!

Was ist ein di! ?
Mach da mal nen div draus, der richtig geschlossen wird...
 
Werbung:
@Maxi
das <di! ist ja eben das Problem. Es ist natürlich nicht gewollt. Im eigentlichen Quellcode ist da auch noch ein <div>.
In der E-Mail die dann ankommt ist da dann allerdings diese komischen Ausrufezeichen. Steht aber auch alles in dem Post.


@Fredmonster
Ob du es mir glaubst oder nicht ist dir überlassen. ...oder hängt davon ab wie du "...ewig danach gesucht..." definierst.
Ich finde ca. 3 Wochen nach der Lösung eines Problems zu suchen ist schon recht lang.

Ist dir denn das Problem bekannt? ich kenne die php-seite schon. Und den Link von dir kenne ich auch. Allerdings hatte ich da bis jetzt leider noch keinen Lösungsansatz gesehen.

Ich muss allerdings gestehen, dass ich die User Contributed Notes mir noch nicht sooo genau angesehen hatte. Bin ich jetzt grade dabei.

Bin auch echt kein php/html-Speziallist,.. daran solltest du eventuell denken, falls du noch ne Antwort schriebst.

Und ich verstehe es ehrlich gesagt nicht ganz, warum du mich so forsch anmachst. Mein Post sieht doch wirklich nicht nach einem "Ich war zu faul danach zu suchen"-Thread aus oder?
 
keinesfalls, ich wollte dich auch net anmachen, nur kann ich mir net vorstellen, wenn es auf der php-seite nen fetten Beitrag zu "html-Email" gibt, dass du lange danach gesucht hast.. Aber okay.. Lies dir bitte mal genau diesen Eintrag durch, dann wirst du mekrne, dass du eine html-mail nicht einfach mit @mail($to, $subject, $message); versenden kannst..
PS: PHP: mail - Manual Beispiel 921..
 
Ok, da habe ich mich glaube ich blöd ausgedrückt. Ich verschicke die Mail nicht nur mit einem mail()-Aufruf

Ich habe zwei Extramethoden, die für den Versandt zuständig sind.

In der ersten gebe ich der Mail einem header:

PHP:
<?php
 function create_mail($from,$message,$attachment){
 $Trenner = md5(uniqid(time()));  
   
 $mail_message  = "From: $from";
 $mail_message .= "\n"; 
 $mail_message .= "Reply-To: $from";
 $mail_message .= "\n"; 
 $mail_message .= "MIME-Version: 1.0"; 
 $mail_message .= "\n"; 
 $mail_message .= "Content-Type: multipart/mixed; boundary=$Trenner"; 
 $mail_message .= "\n\n"; 
 $mail_message .= "This is a multi-part message in MIME format"; 
 $mail_message .= "\n"; 
 $mail_message .= "--$Trenner";    
 $mail_message .= "\n"; 
 $mail_message .= "Content-Type: text/html; charset=iso-8859-1";  
 $mail_message .= "\n"; 
 $mail_message .= "Content-Transfer-Encoding: 8bit"; 
 $mail_message .= "\n\n"; 
 $mail_message .= $message; 
 $mail_message .= "\n\n"; 
 //If attached files, then attached it!
 if($attachment) {
  
 $fext  = array_pop(explode('.', $attachment[0]));   
 
 $mail_message .= "--$Trenner";   
 $mail_message .= "\n"; 
 $mail_message .= "Content-Type: application/".$fext."; name=".$attachment[0]; 
 $mail_message .= "\n"; 
 $mail_message .= "Content-Transfer-Encoding: base64"; 
 $mail_message .= "\n"; 
 $mail_message .= "Content-Disposition: attachment; filename=".$attachment[0]; 
 $mail_message .= "\n\n"; 
 $mail_message .= chunk_split(base64_encode($attachment[1]));  
 $mail_message .= "\n"; 
 $mail_message .= "--$Trenner--";   
 $mail_message .= "\n\n"; 
 $mail_message .= "--$Trenner";   
 $mail_message .= "\n"; 
 
 }
return $mail_message;
}

In der zweiten wird die Mail dann versendet:

PHP:
function send_mail($to,$subject,$message,$debug){
 
  if($debug){
          $file1="email".$to.".eml";
         $output="To:".$to."\nSubject:".$subject."\n".$message;
         $handle=fopen($file1,"w+");  
  fwrite($handle,$output);  
  fclose($handle);   
  return "Email are saved as $file";
  }else{
 mail($to, $subject, "", $message);  
  
 return "Email are sended to $to";  
  }         
}   
?>

Ich habe also den header der message hinzugefügt, und gebe ihn nicht wie in deinem Beispiel mit einem Parameter in der mail()-Funktion an.

Sollte doch eigentlich auch gehen oder?

Falls es Jemanden interessiert:

Ich habe die Ursache für das Problem gefunden.

Die E-Mail, die ich verschickt habe, war ja so aufgebaut, dass ich in einer Variable den Email-Inhalt gespeichert habe(Also der HTML Code)

Das Problem war nun, dass der gesamte Inhalt in einer langen langen Zeile gespeichert war.

Internetbrowser scheinen damit kein Problem zu haben, aber irgendwo beim versenden der mail war das dann wohl doch ein Problem.

Ich schätze mal, dass ein Parser (beim erreichen einer maximalen Zeilenlänge) einen erzwungenen Zeilenumbruch in den Quellcode eingefügt hat. Woher da das ! kommt,.. ka ist nur meine Vermutung.

Die Lösung des Problems war es dann einfach, dass ich in die Nachricht mehrere \r\n eingebaut habe.

Jetzt funktioniert alles wie gewollt. :-D;Jump:-D;Jump:-D
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben