php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2008, 23:09  
Benutzer
 
Registriert seit: 19.12.2008
Beiträge: 34
moercel befindet sich auf einem aufstrebenden Ast
Standard PHP eMail mit CSS

Hallo,
ich probiere nun schon seit Tagen CSS in eine eMail zu bekommen!

Die eMail wird zwar gesendet, jedoch wird keine Formatierung durch CSS in der eMail erkennbar.
(Am PHP Code kann es eigentlich nicht liegen, da kein Fehler ausgegeben wird!)

Kann mir eventuell jemand weiterhelfen?

Hier der Code, der die PHP eMail erstellt (bzw. erstellen soll):
PHP-Code:
if(isset($_POST['senden'])) {

$anreise ''.$tagan.'.'.$monatan.'.'.$jahran.'';
$abreise ''.$tagab.'.'.$monatab.'.'.$jahrab.'';
$ip ="$REMOTE_ADDR"
$host gethostbyaddr($ip); 
$referrer ="$HTTP_REFERER"
    
$korrekt=true;
    
$anrede    $_POST['anrede'];
$vorname   $_POST['vorname'];
$nachname  $_POST['nachname'];
$straße    $_POST['straße'];
$hausnr    $_POST['hausnr'];
$plz       $_POST['plz'];
$ort       $_POST['ort'];
$vorwahl   $_POST['vorwahl'];
$telnr     $_POST['telnr'];
$email     $_POST['email'];
$sonstiges $_POST['sonstiges'];
$personen  $_POST['personen'];
$kinder    $_POST['kinder'];
$tagan     $_POST['tagan'];
$monatan   $_POST['monatan'];
$jahran    $_POST['jahran'];
$tagab     $_POST['tagab'];
$monatab   $_POST['monatab'];
$jahrab    $_POST['jahrab'];
$captcha   $_POST['captcha'];
    
session_start();
    
if (
$anrede==''){
$fehl[0]=true;
$korrekt=false;}
    
if (!
preg_match("/^([a-zA-ZäöüÄÖÜß\-\ ]{3,30})+$/i",$vorname)){
$fehl[1]=true;
$korrekt=false;}
    
if (!
preg_match("/^([a-zA-ZäöüÄÖÜß\-\ ]{3,30})+$/i",$nachname)){
$fehl[2]=true;
$korrekt=false;}
    
if (!
preg_match("/^([a-zA-Z0-9äöüÄÖÜß\-\.\ ]{5,40})+$/i",$straße)){
$fehl[3]=true;
$korrekt=false;}
    
if (!
preg_match("/^([0-9]{1,3}+[a-dA-D]{0,1})+$/i",$hausnr)){
$fehl[4]=true;
$korrekt=false;}
    
if (!
preg_match("/^([0-9]{4,5})+$/i",$plz)){
$fehl[5]=true;
$korrekt=false;}
    
if (!
preg_match("/^([a-zA-ZäöüÄÖÜß\-\.\ ]{3,40})+$/i",$ort)){
$fehl[6]=true;
$korrekt=false;}
    
if (!
preg_match("/^([0-9]{2,5})+$/i",$vorwahl)){
$fehl[7]=true;
$korrekt=false;}
    
if (!
preg_match("/^([0-9\-\/]{4,10})+$/i",$telnr)){
$fehl[8]=true;
$korrekt=false;}
    
if (
strlen($land)>0){
$fehl[9]=true;
$korrekt=false;}

if(
$email==''){
$korrekt=true;}

else{

if(!
preg_match("/^[0-9a-z\-\_\.]+@([0-9a-z][0-9a-z\-]+\.)+[a-z]{2,3}+$/i",$email)){
$fehl[10]=true;
$korrekt=false;}}

if(
$email==''){$email=='keine Angabe';}
    
if (
strlen($sonstiges)>100){
$fehl[11]=true;
$korrekt=false;}
    
if (
$personen==''){
$fehl[12]=true;
$korrekt=false;}
    
if (
$kinder==''){
$fehl[13]=true;
$korrekt=false;}
    
if (
$tagan==''){
$fehl[14]=true;
$korrekt=false;}
    
if (
$monatan==''){
$fehl[15]=true;
$korrekt=false;}
    
if (
$jahran==''){
$fehl[16]=true;
$korrekt=false;}
    
if (
$tagab==''){
$fehl[17]=true;
$korrekt=false;}
    
if (
$monatab==''){
$fehl[18]=true;
$korrekt=false;}
    
if (
$jahrab==''){
$fehl[19]=true;
$korrekt=false;}
            
if (
$anreise $abreise){
$fehl[20]=true;
$korrekt=false;}
    
if (
$tagan+$tagab){
$fehl[21]=true;
$korrekt=false;}
    
if(isset(
$_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset(
$_SESSION['captcha_spam']);}

else{

$fehl[22]=true;
$korrekt=false;} 
    
if(
$korrekt){
$empfaenger="name@domain.de";
$subject="Buchung vom ".date("d.m.Y")."\r\n";
$mailheader="From: Buchungsformular\r\n";
$mailheader="X-Mailer: PHP/" phpversion(). "\r\n";
$mailheader="Content-Type: text/html; charset=UTF-8\r\n";
$text=nl2br("
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='de' lang='de'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<style type='text/css'>
body {
font-family: Verdana;
font-size: 12px;
color: #555555;
line-height: 15px;}

a {color: #ff9000; text-decoration: none;}
a:hover {color: #555555; text-decoration: none;}

h2 {font-size: 14px; font-weight: bold; color: #ff9000}

label {
width: 90px;
display: block;}
</style> 
</head>

<body>
Soeben ist eine neue Buchung von $anrede $nachname eingegangen!
Es folgen die eingegebenen Daten:

<h2>Persönliche Daten</h2>

<label>Anrede:</label> $anrede
<label>Vorname:</label> $vorname
<label>Nachname:</label> $nachname

<label>Straße, Nr.:</label> $straße $hausnr
<label>PLZ, Ort:</label> $plz $ort

<label>Telefon:</label> $vorwahl/$telnr
<label>eMail:</label> $email

<label>Sonstiges:</label> $sonstiges


<h2>Daten zum Aufenthalt</h2>

<label>Personen:</label> $personen
<label>Kinder:</label> $kinder

<label>Anreise:</label> $anreise
<label>Abreise:</label> $abreise
        

<h2>Zusätzliche Daten (unwichtig für die Buchung)</h2>

<label>Captcha-Code:</label> $captcha_spam

<label>IP-Adresse:</label> $ip
<label>Hostname:</label> $host
<label>Referrer:</label> $referrer
</body>
</html>"
);

if (@
mail($empfaenger$subject$text$mailheader)) {
header("Location:kontakttest5.php?checked");
exit;}

... 
Wäre für schnelle Hilfe dankbar!

Gruß,
moercel
moercel ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.12.2008, 23:13  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Nur mal so: label ohne form und Formelement gibts nicht.
Ansonsten: versuche Inline CSS.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 19.12.2008, 23:16  
Benutzer
 
Registriert seit: 19.12.2008
Beiträge: 34
moercel befindet sich auf einem aufstrebenden Ast
Standard

Ok, danke!
Aber ich denke nicht, dass das irgendwas damit zu tun hat, dass die Formatierungen durch CSS nicht richtig angezeigt werden, oder irre ich mich da???
moercel ist offline  
Alt 19.12.2008, 23:18  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Keine Ahnung. Du kannst auch mal verschiedene Mailclients/Webmailer durchprobieren.

http://css-discuss.incutio.com/?page=StyleInEmail
HTML for email clients
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 19.12.2008, 23:21  
Benutzer
 
Registriert seit: 19.12.2008
Beiträge: 34
moercel befindet sich auf einem aufstrebenden Ast
Standard

Ich glaube daran liegt es nicht, denn das Bsp. von "http://www.phpbuddy.eu/emails-mit-php-versenden.html?start=3" zeigt die Formatierung richtig an. Also muss es dann an meinem Code liegen?!
moercel ist offline  
Alt 19.12.2008, 23:23  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Bei Mails musst du immer Inline-CSS benutzen(dachte ich zumindest).
PTC ist offline  
Alt 19.12.2008, 23:24  
Benutzer
 
Registriert seit: 19.12.2008
Beiträge: 34
moercel befindet sich auf einem aufstrebenden Ast
Standard

Ja das weiß ich mittlerweile, aber das kann, glaube ich, nicht das Problem sein oder etwa doch?
Denn die Schriftfarbe wird zum Beispiel auch nicht formatiert!

Und noch etwas ist mir aufgefallen:
Wenn ich die jeweiligen Elemente (z.B. "h2" mit style=" ") formatiere werden sie in der eMail richtig formatiert! Finde ich irgendwie merkwürdig!

Geändert von moercel (19.12.2008 um 23:33 Uhr).
moercel ist offline  
Alt 19.12.2008, 23:34  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Eine Möglichkeit wäre, dass der Emailclient das CSS blockt oder ein eigenes Style-Sheet nutzt.

How to Code HTML Email Newsletters [HTML & XHTML Tutorials]

Zitat:
Do not use the CSS style declaration in the HTML head tag, as you might when authoring web pages. Instead, place your style declaration right below the body tag -- Google Mail, in particular, looks for any style in the email and (helpfully) deletes it. Also, don't bother using the link element to reference an external style sheet: Google Mail, Hotmail, and other email software will ignore, modify, or delete these external references to a style sheet.
Der ganze Artikel könnte für dich interessant sein.

Übrigends mal noch ein paar Kleinigkeiten die an deinem Code auffallen:

1)
PHP-Code:
$anreise ''.$tagan.'.'.$monatan.'.'.$jahran.'';
$abreise ''.$tagab.'.'.$monatab.'.'.$jahrab.'';
$ip ="$REMOTE_ADDR"
$host gethostbyaddr($ip); 
$referrer ="$HTTP_REFERER"
die ''. und .'' an Anfang und Ende sind unnötig
Variablen muss man nicht extra in " " setzen, damit wird nur unnötigerweise extra nochmal ein parser angeschmissen der den String auf Variablen untersucht.

PHP-Code:
if (!preg_match("/^([a-zA-ZäöüÄÖÜß\-\ ]{3,30})+$/i",$vorname)){ 
Wenn man den modifier i verwendet, braucht man nicht noch alle Zeichen in Groß UND Kleinschreibung nutzen, eins davon reicht.

PHP-Code:
$anrede    $_POST['anrede'];
$vorname   $_POST['vorname']; 
Üblicherweise sollte man vor den Zuweißungen überprüfen, ob die Variable überhaupt gesetzt sind ( PHP: isset - Manual ), wenn man ordentlicherweise error_reporting aktiviert hat gibt es bei ungesetzten Variablen sonst notices.

Ansonsten wäre es auch schön den Quellcode einzurücken, das macht das lesen doch um einiges leichter.
robo47 ist offline  
Alt 19.12.2008, 23:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Zitat:
Wenn ich die jeweiligen Elemente (z.B. "h2" mit style=" ") formatiere
Aber genau das IST doch eine Inline Formatierung! inline hat nichts mit display:inline zu tun!

Zitat:
aber das kann, glaube ich, nicht das Problem sein oder etwa doch?
Und wieso nicht, wenn die oben verlinkten Quellen alle davon sprechen?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 20.12.2008, 00:04  
Benutzer
 
Registriert seit: 19.12.2008
Beiträge: 34
moercel befindet sich auf einem aufstrebenden Ast
Standard

Ok! Erstmal danke für eure schnellen Antworten!
Ich werde mir sie in Ruhe durchlesen und mich dann nochmal melden

Gruß,
moercel
moercel ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
eMail an bestimmte Adresse -> Skript ? Stephan_87 PHP Tipps 2008 6 10.12.2008 23:43
Probleme mit abzusendender Email Leicowitz PHP Tipps 2008 17 17.09.2008 08:59
Abfrage ob email adresse schon vorhanden ist TeazY PHP Tipps 2008 10 16.12.2007 12:22
email decodieren / imap_fetchbody malabarista PHP Tipps 2006 0 19.10.2006 09:53
DB Abfrage nach email funktioniert nicht tinchen Datenbanken 3 15.05.2006 13:20
email test shocky PHP Tipps 2006 2 16.03.2006 13:55
Email Header und Alternativer Text... PHP Tipps 2007 22 10.11.2005 16:38
[Erledigt] automatisch Email PHP Tipps 2005-2 3 26.07.2005 12:53
[Erledigt] doppelte email adressen suchen Datenbanken 9 20.05.2005 19:38
Email aus textarea PHP Tipps 2005 3 14.04.2005 21:37
eMail kontrolle PHP Tipps 2004-2 1 20.12.2004 13:01
Wie implementiere ich mein Email Formular? PHP Tipps 2004-2 2 14.11.2004 17:02
Suche eMail Formular in PHP Beitragsarchiv 2 12.10.2004 16:24
email funktion des phpbb selbst benutzen PHP Tipps 2004 0 22.09.2004 13:18
Email per PHP formatieren PHP Tipps 2004 4 26.07.2004 09:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mail css, email mit css, buchungsformular php, email css, php mail html css, css email, css in email, php buchungsformular, php html mail css, php email css, php mail css style, phpmailer css, mail php css, php mail mit css, css php mail, php css mail, php mail style.css, css in php mail, css in mail php, php email mit css

Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum