php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-11-2007, 19:23
*Maiki
 Registrierter Benutzer
Links : Onlinestatus : *Maiki ist offline
Registriert seit: Oct 2006
Beiträge: 57
*Maiki ist zur Zeit noch ein unbeschriebenes Blatt
Standard mysteriöser Fehler bei Darstellung von HTML-Mails

Hallo,

ich verwende in meinen Projekten für jeglichen Mailversand die Klasse phpMailer. Ziemlich gut und empfehlenswert.

Allerdings hab ich es hier mit einem Fehler zu tun, den ich mir nun überhaupt nicht erklären kann.

Ich verschicke zwei Mails in Folge, die erste an den Anbieter, die zweite an den Seitenbesucher, der sich angemeldet hat.

Funktioniert, die Mails kommen an. Da sind nun einige Passagen drin, die in HTML dargestellt werden sollen.

HTML ist auf "true", funktioniert auch. Nun wird der Code für die Mail eben dynamisch aufgebaut und aus irgendeinem Grund kommt es dazu, dass die Mail manchmal als HTML und manchmal als Plain dargestell wird, in Abhängigkeit von einer bestimmten String-Variablen, die an einer bestimmte Stelle des HTML-Dokuments eingebettet wird.

Ich konnte aber nach ausgiebiger Analyse bisher keine plausible Fehlerursache feststellen.

Heißt der String z.B. "Bitte geben" (nur als Beispiel), erscheint die ganze Mail als HTML. Heißt der gleiche String dagegen "Bitte geben Sie eine ..." oder so ähnlich (enthält keine Sonderzeichen!), kann es passieren, dass sie Plain dargestellt wird. Lass ich den String ganz raus, erscheint sie ebenfalls als Plain.

In der ersten Mail (an den Seitenbetreiber) verschicke ich an dieser Stelle Infos über IP, Server, Zeitpunkt. Übernehme ich diesen String (zum Test) auch für den Kunden, erscheint die Mail ebenfalls als HTML. Ändere ich den String ab, wird schnell wieder Plaintext aus der Mail... allerdings ohne einen für mich ersichtlichen Grund... also Sonderzeichen o.ä. kommen wie gesagt nicht vor, sogar nicht mal unbedingt HTML.

Puh...
Da bin ich nun ziemlich überfordert.

Evtl. hat das was mit der Länge an sich zu tun? Ich weiß jetzt nicht... Muss in so einer Mail alle paar Zeichen \r\n erscheinen oder so was? Wobei ich auch das schon probiert hab, aber das löst das Problem noch nicht. Nach irgendwas in der Art schaut es hier aus, aber das muss man dann wohl wissen.

Kennt jemand diese Ecke von Fehler in HTML-Mails?

Gruß Maik



(HTML muss es eben sein, der Seitenbetreiber will das so.)

Geändert von *Maiki (10-11-2007 um 19:31 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 10-11-2007, 19:45
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

So ganz ohne Quellcode kann man gar nicht sehen, welchen Bock du da geschossen hast!
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 11-11-2007, 23:37
*Maiki
 Registrierter Benutzer
Links : Onlinestatus : *Maiki ist offline
Registriert seit: Oct 2006
Beiträge: 57
*Maiki ist zur Zeit noch ein unbeschriebenes Blatt
Standard Codebeispiel

Es ist zum Verzweifeln...

Der Fehler ist auf jeden Fall mal reproduzierbar: Lass ich das selbe Skript ohne Änderung x mal laufen, krieg ich x mal das gleiche Ergebnis. Änder ich auch nur bisschen was an der Content-Zusammensetzung, sind Änderungen in der Form entweder HTML- oder Plaintext-Ausgabe leicht möglich.

Es lässt sich nach Probieren keine Abhängigkeit von Server, Email-Adressen, etc. feststellen, es muss was direkt mit dem Content zu tun haben.

Hier ein Beispiel, bei dem die Mail als Plain angezeigt wird:
PHP-Code:
                              $mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host "...";
$mail->SMTPAuth true;
$mail->Username "...";
$mail->Password "...";


                                
$mail->From "info@hasihasihasi.de";
                                
$mail->FromName "hasi.de";

                                
$mail->AddAddress $_POST 'email' ], $_POST 'vorname' ] . " " $_POST 'name' ] );
                                
                                
$mail->IsHTML(true);                                  // set email format to HTML

                                
                                
if ( $profil_aendern == true )
                                {
                                        
$mail->Subject "Profilaenderung fuer hasihasihasi.de\r\n";
                                        
                                        
$aktion "<b>Sie haben Ihre Daten wie folgt aktualisiert:</b><br><br>";

                                        
$text_drunter "<br><br><small>Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt.</small><br><br><small>Sollten Sie es vergessen haben, fordern Sie</small><br><small>es bitte &uuml;ber den Punkt Passwort vergessen neu an.</small><br><br>";

                                        
$freischaltung "";

                                        
$freischaltung2 "";

                                }
                                else
                                {
                                        
$mail->Subject "Ihre Registrierung fuer hasihasihasi.de - Bitte bestaetigen!\r\n";

                                        
$aktion "<b>Sie haben sich mit folgenden Daten angemeldet:</b><br><br>";

                                        
$text_drunter "Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt."//"<small>Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt.</small>"; //<br><small>Sollten Sie es vergessen haben, fordern Sie</small><br><small>es bitte &uuml;ber den Punkt Passwort vergessen neu an.</small>";

                                        
$freischaltung "Damit Sie den Zugang nutzen konnen mussen Sie ihn durch Klicken dieses Links freischalten:<br>";

                                        
$freischaltung2 =
                                         
"<a href=\"http://www.hasihasihasi.de\">Ich best&auml;tige, dass ich mich mit diesen Daten f&uuml;r hasihasihasi.de registrieren m&ouml;chte.</a>";
                                }

                              
$mail->Body =

                                         
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">".
                                         
"<HTML>".
                                         
"<HEAD>".
                                         
"<TITLE></TITLE>".
                                         
"<META http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\">".
                                         
"<style type=\"text/css\">".
                                         
" body, table { text-decoration:none; font-weight:normal; color:#222222; font-size:10pt; font-family:Arial; }".
                                         
"  a:link { text-decoration:none; font-weight:normal; color:#cc0000; } a:visited { text-decoration:none; font-weight:normal; color:#cc0000; }".
                                         
"  a:hover { text-decoration:none; font-weight:normal; color:#ff0000; } a:active { text-decoration:none; font-weight:normal; color:#ff0000; }".
                                         
"  a:focus { text-decoration:none; font-weight:normal; color:#ff0000; }".
                                         
" .kleinschrift { font-size:9pt; }".                                                     
                                         
"</style>".
                                         
"</HEAD>".
                                         
"<BODY bgcolor=\"#eeeeee\" text=\"#000000\">".

                                         
$aktion .

                                         
//$daten_string .

                                         
$text_drunter $freischaltung $freischaltung2 .

"<div class=\"kleinschrift\">" .
                                                     
"<b>Zeitpunkt der Absendung:</b> " htmlentities $zeitpunkt ). "<br>" .
                                                     
"<b>IP:</b> " htmlentities $ip ) . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" .
                                                 
"<b>Host:</b> " htmlentities $host ) . "<br><br>" .
"</div>" .

                                         
"</BODY>".
                                         
"</HTML>";

                                         
$mail->AltBody $mail->Body;

                                                    if ( ! 
$mail->Send () )
                                                    {
                                                                     echo 
"<br><br>Mail an " $_POST 'email' ] . " konnte nicht verschickt werden!";
         
         
fehlermeldung_in_datenbank_schreiben "Mail an Kunde konnte nicht verschickt werden." );
         
                                                    }
                                                    else
                                                    {
         echo 
"<br><br>Sie bekommen in K&uuml;rze eine Email mit Ihren Registrierungsdaten.<br><br><br><br><br><br>"//, in der Sie Ihre Registrierungsabsicht best&auml;tigen m&uuml;ssen.";
                                                    
}


        } 
So, jetzt zum Vergleich ein Beispiel, wo HTML rauskommt, weil in irgendeinem String ein paar Zeichen weniger enthalten sind...:


PHP-Code:
                              $mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host "...";
$mail->SMTPAuth true;
$mail->Username "...";
$mail->Password "...";
                                
$mail->From "info@hasihasihasi.de";
                                
$mail->FromName "hasi.de";
                                
$mail->AddAddress $_POST 'email' ], $_POST 'vorname' ] . " " $_POST 'name' ] );
                                
$mail->IsHTML(true);                                  // set email format to HTML
                                
if ( $profil_aendern == true )
                                {
                                        
$mail->Subject "Profilaenderung fuer hasihasihasi.de\r\n";
                                        
$aktion "<b>Sie haben Ihre Daten wie folgt aktualisiert:</b><br><br>";
                                        
$text_drunter "<br><br><small>Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt.</small><br><br><small>Sollten Sie es vergessen haben, fordern Sie</small><br><small>es bitte &uuml;ber den Punkt Passwort vergessen neu an.</small><br><br>";

                                        
$freischaltung "";
                                        
$freischaltung2 "";
                                }
                                else
                                {
                                        
$mail->Subject "Ihre Registrierung fuer hasihasihasi.de - Bitte bestaetigen!\r\n";

                                        
$aktion "<b>Sie haben sich mit folgenden Daten angemeldet:</b><br><br>";
                                        
$text_drunter "Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt."//"<small>Das Passwort wird aus Sicherheitsgr&uuml;nden nicht angezeigt.</small>"; //<br><small>Sollten Sie es vergessen haben, fordern Sie</small><br><small>es bitte &uuml;ber den Punkt Passwort vergessen neu an.</small>"; 
$freischaltung = "Damit Sie den Zugang"; // nutzen konnen mussen Sie ihn durch Klicken dieses Links freischalten:<br>";
PHP-Code:
                                        $freischaltung2 =
                                         
"<a href=\"http://www.hasihasihasi.de\">Ich best&auml;tige, dass ich mich mit diesen Daten f&uuml;r hasihasihasi.de registrieren m&ouml;chte.</a>";
                                                                         }
                              
$mail->Body =
                                         
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">".
                                         
"<HTML>".
                                         
"<HEAD>".
                                         
"<TITLE></TITLE>".
                                         
"<META http-equiv=\"Content-Type\" content=\"text/html;charset=ISO-8859-1\">".
                                         
"<style type=\"text/css\">".
                                         
" body, table { text-decoration:none; font-weight:normal; color:#222222; font-size:10pt; font-family:Arial; }".
                                         
"  a:link { text-decoration:none; font-weight:normal; color:#cc0000; } a:visited { text-decoration:none; font-weight:normal; color:#cc0000; }".
                                         
"  a:hover { text-decoration:none; font-weight:normal; color:#ff0000; } a:active { text-decoration:none; font-weight:normal; color:#ff0000; }".
                                         
"  a:focus { text-decoration:none; font-weight:normal; color:#ff0000; }".
                                         
" .kleinschrift { font-size:9pt; }".                                                     
                                         
"</style>".
                                         
"</HEAD>".
                                         
"<BODY bgcolor=\"#eeeeee\" text=\"#000000\">".
                                         
$aktion .
                                         
//$daten_string .
                                         
$text_drunter $freischaltung $freischaltung2 .
"<div class=\"kleinschrift\">" .
"<b>Zeitpunkt der Absendung:</b> " htmlentities $zeitpunkt ). "<br>" .
"<b>IP:</b> " htmlentities $ip ) . "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" .
"<b>Host:</b> " htmlentities $host ) . "<br><br>" .
"</div>" .
                                         
"</BODY>".
                                         
"</HTML>";
                                         
$mail->AltBody $mail->Body;

                                                    if ( ! 
$mail->Send () )
                                                    {
                                                                     echo 
"<br><br>Mail an " $_POST 'email' ] . " konnte nicht verschickt werden!";
         
         
fehlermeldung_in_datenbank_schreiben "Mail an Kunde konnte nicht verschickt werden." );

                                                    }
else
                                                    {
         echo 
"<br><br>Sie bekommen in K&uuml;rze eine Email mit Ihren Registrierungsdaten.<br><br><br><br><br><br>"//, in der Sie Ihre Registrierungsabsicht best&auml;tigen m&uuml;ssen.";
                                                    
}
        } 
Ändere ich also lediglich den Inhalt des Strings
$freischaltung von

"Damit Sie den Zugang nutzen konnen mussen Sie ihn durch Klicken dieses Links freischalten:<br>";

auf

"Damit Sie den Zugang"; // nutzen konnen mussen Sie ihn durch Klicken dieses Links freischalten:<br>";

kommt statt Plain auf einmal HTML raus.

Es muss wohl irgendwas mit Blöcken / Längen / Umbruchzeichen, irgend so was in der Art zu tun haben...? Vielleicht, dass nicht mehr als x Zeichen am Stück ohne ein zwischenzeitliches y vorkommen dürfen, so was vielleicht?

Allerdings hab ich ähnliche Mailversendungen ja schon in mehreren PHP-Anwendungen eingebaut und erleb dies mysteriöse Problem nun zum ersten Mal. Ich komm nicht dahinter... Ein Wackler im Thunderbird wirds ja wohl nicht sein... Ausschauhaltende Klienten will ich nun allerdings wirklich nicht ausprobieren, in der Hoffnung, dass es auch eine humane Lösung gibt.
Mit Zitat antworten
  #4 (permalink)  
Alt 11-11-2007, 23:46
Koala
 PHP Junior
Links : Onlinestatus : Koala ist offline
Registriert seit: Jan 2006
Beiträge: 887
Koala ist zur Zeit noch ein unbeschriebenes Blatt
Standard

meinst Du hier hat jemand Lust hundert Kilometer horizontal zu scrollen?
Mit Zitat antworten
  #5 (permalink)  
Alt 11-11-2007, 23:55
*Maiki
 Registrierter Benutzer
Links : Onlinestatus : *Maiki ist offline
Registriert seit: Oct 2006
Beiträge: 57
*Maiki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Einerseits lässt sich hier schlecht was aus dem Zusammenhang
rausreißen, weil der Fehler wie gesagt auftritt, wenn ich an
sonstwelchen Stellen des Contents was ändere, da besteht
also eine Abhängigkeit von was Globalerem als einem
einzelnen String und dann hab ich den einen String als Beispiel
ja mal fett rausgehoben, vielleicht lässt sich anhand der
Unterscheidung für einen Gelehrten ja spontan
schon ersehen, woher der Fehler rührt... (Ansonsten weiß ich nicht,
wie ich längere Codepassagen aus so einem umfangreichen Skript
noch viel kompakter darstellen soll, ohne womöglich zusätzlich Fehler
dabei reinzuhauen, so leicht formatieren lässt sich mit dem
Eingabefeld im Forum halt auch nicht.)
Mit Zitat antworten
  #6 (permalink)  
Alt 12-11-2007, 03:53
*Maiki
 Registrierter Benutzer
Links : Onlinestatus : *Maiki ist offline
Registriert seit: Oct 2006
Beiträge: 57
*Maiki ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, es scheint in Richtung Junk zu gehen...
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:20 Uhr.