Mail mit html und PHP
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
betreff
bild
code
email
formular
funktion
garantie
header
kopf
meldung
mime
null
problem
raten
schlag
standard
text
type
url
-
Hallo,
ich würde gerne eine Mail schreiben, die sowohl HTML als auch PHP enthält. Wenn ich alles einfach einfüge, ist nichts so, wie es soll...
Worauf muss ich achten? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
sneppa schrieb:
Ich würde dir raten die Mails nicht mit der mail() Funktion zu versenden,
sondern mit PHPMailer.
Mach ich -
Ja und dort kannst du einen normalen Body und einen HTML Body übersenden.
HTML-Version:
$mail->Body = nl2br($text);
Nicht HTML-Version:
$mail->AltBody = strip_tags($text);
Aber was funktioniert denn genau nicht?
Wenn ich alles einfach einfüge, ist nichts so, wie es soll...
Ist ja nicht wirklich eine Fehlerbeschreibung
Kleines Tutorial:
http://www.tanmar.info/content/view/36/64/
Beitrag zuletzt geändert: 1.6.2011 16:48:13 von sneppa -
Ich habe ein Textfeld gemacht, bei dem ich den Text eingeben kann. Wenn ich mein HTML Zeug einfach reinkopiere, steht wirres zeug da :D
-
sneppa schrieb:
Glaubst du, dass diese Beschreibung irgendjemandem hier weiter hilft?
Poste doch bitte PHP-Code und das HTML Formular.
Außerdem Quelltext der Email und zusätzlich ein Screenshot was dich stört.
Jup, dachte ich...
<?php if(isset($_POST['submit'])) { $absendername = $_POST['absendername']; $absendermail = $_POST['absendermail']; $betreff = $_POST['betreff']; $text = $_POST['text']; $empfaenger = explode('|', $_POST['empfaenger']); $extra = "From: $absendername <$absendermail>\n"; $extra .= "Content-Type: text/html\n"; $extra .= "Content-Transfer-Encoding: 8bit\n"; foreach($empfaenger as $e) { $i++; $mail = mail($e, $betreff, $text, $extra); if($mail = true) { $meldung .= "<span style='color: #00ff00;'>Mail erfolgreich an ".$e." gesendet.</span><br>\n"; }elseif($mail = false) { $meldung .= "<span style='color: #ff0000;'>Mail nicht erfolgreich an ".$e." gesendet.</span><br>\n"; } } } ?> <!DOCTYPE html> <html> <head> <title>E-Mail's versenden</title> </head> <body> <form method="post"> An:<textarea name="empfaenger"></textarea><br> <br> Von:<input type="text" name="absendername" /><br> Von:<input type="text" name="absendermail" /><br> <br> Betreff: <input type="text" name="betreff" /><br> <br> Text: <textarea name="text"></textarea><br> <br> <br> <input type="submit" value="Senden" name="submit" /> </form> <?=$meldung?> </body> </html>
Was mich stört: Wenn ich HTML einfüge, wirds nicht richtig dargestellt - ein Bild wird da nicht viel helfen. -
du musst den Email Clienten auch klar machen das da jetzt was in html kommt
hier mal ein kurzes bsp.
$empfaenger = "du@testkarnickel.de"; $absender = "ich@testkarnickel.de"; $betreff = "Mail-Test - HTML-E-Mail mit PHP erstellen"; $antwortan = "ICH@testkarnickel.de"; $header = "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; $header .= "From: $absender\r\n"; $header .= "Reply-To: $antwortan\r\n"; $header .= "X-Mailer: PHP ". phpversion(); mail( $empfaenger, $betreff, $mailtext, $header);
Das Wichtige hierbei ist die MIME-Version, der Content-Type und der X-Mailer -
deep-shades schrieb:
du musst den Email Clienten auch klar machen das da jetzt was in html kommt
hier mal ein kurzes bsp.
$empfaenger = "du@testkarnickel.de"; $absender = "ich@testkarnickel.de"; $betreff = "Mail-Test - HTML-E-Mail mit PHP erstellen"; $antwortan = "ICH@testkarnickel.de"; $header = "MIME-Version: 1.0\r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; $header .= "From: $absender\r\n"; $header .= "Reply-To: $antwortan\r\n"; $header .= "X-Mailer: PHP ". phpversion(); mail( $empfaenger, $betreff, $mailtext, $header);
Das Wichtige hierbei ist die MIME-Version, der Content-Type und der X-Mailer
Das ist also das Wichtige?
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-1\r\n";
$header .= "X-Mailer: PHP ". phpversion();
Hab ich in mein Script eingefügt und ist wie zuvor. Bis jetzt nur HTML, falls es wichtig sein sollte. :)
Beitrag zuletzt geändert: 1.6.2011 19:22:47 von rate -
rate schrieb:
Was mich stört: Wenn ich HTML einfüge, wirds nicht richtig dargestellt - ein Bild wird da nicht viel helfen.
Schlag dir HTML Mails aus dem Kopf. Es gibt keinen Standard für HTML Mails und mein Mailclient unterstützt HTML Mails überhaupt nicht. Von daher hast du wirklich Null Garantie, dass du bei allen Empfängern was vernünftiges angezeigt bekommst. Zumal HTML Mails auch ein gewisses Sicherheits- und Datenschutzrisiko mit sich bringen. -
bladehunter schrieb:
rate schrieb:
Was mich stört: Wenn ich HTML einfüge, wirds nicht richtig dargestellt - ein Bild wird da nicht viel helfen.
Schlag dir HTML Mails aus dem Kopf. Es gibt keinen Standard für HTML Mails und mein Mailclient unterstützt HTML Mails überhaupt nicht. Von daher hast du wirklich Null Garantie, dass du bei allen Empfängern was vernünftiges angezeigt bekommst. Zumal HTML Mails auch ein gewisses Sicherheits- und Datenschutzrisiko mit sich bringen.
Eine andere Möglichkeit gibts aber nicht. Wenn du schon einen Mac hast, nehmen wir als Beispiel Apple. Wenn dies nicht mit HTML lösen, wie dann?
Auch wenns Lücken gibt. Wär mir wichtig, wenn ich es irgendwie hinbekomme. -
rate schrieb:
bladehunter schrieb:
Schlag dir HTML Mails aus dem Kopf. Es gibt keinen Standard für HTML Mails und mein Mailclient unterstützt HTML Mails überhaupt nicht. Von daher hast du wirklich Null Garantie, dass du bei allen Empfängern was vernünftiges angezeigt bekommst. Zumal HTML Mails auch ein gewisses Sicherheits- und Datenschutzrisiko mit sich bringen.
Eine andere Möglichkeit gibts aber nicht. Wenn du schon einen Mac hast, nehmen wir als Beispiel Apple. Wenn dies nicht mit HTML lösen, wie dann?
Äh, wieso sollte ich einen Mac haben? Was ist das für eine komische Logik?
Und es gibt nunmal keinen Standard für HTML Mails. Akzeptiere das. Es gibt keinen Workaround. -
blady, mit PHP Mailer kannst du ohne Probleme eine Mail verschicken, die sowohl HTML anzeigen kann, als auch Klartext.
Damit kannst du sicher sein, dass es jeder so angezeigt bekommt, wie er möchte.
Natürlich werden Emails nicht überall zu 100% gleich angezeigt,
das ist aber bei Browsern auch nicht anders.
Mac, davon hat er aber nichts geschrieben...
@rate:
Er benutzt ja nicht die mail() Funktion von PHP sondern die Klasse PHPMailer
Wobei du es mal in der Variable $extra unterbringen könntest.
Soweit ich weiß ist das aber nicht nötig bei PHPMailer, habe für Unternehmen schon Newsletter damit versandt, auch HTML.
Einen Screenshot von der "merkwürdigen" Emaildarstellung hast du noch immer nicht gezeigt,
vielleicht liegt es auch nicht am HTML sondern an der Nutzung von Divs, Spans etc.
In Mails immer Tabellen verwenden!
Kannst ja mal nach Newsletter Tipps in Google suchen,
ist ein Thema für sich.
Verschoben nach PHP & MySQL -
Das mit Mac war ein Lesefehler^^ Sorry, aber vll kennst du die Apple Mails trozdem.
Bild:
http://imageshack.us/photo/my-images/192/abcdefghi.png/ Edit: falsches Bild^^
Wär nett, wenn du es in mein Script einbauen könntest, versteh noch nicht ganz, was du meinst.
Beitrag zuletzt geändert: 1.6.2011 20:10:56 von rate -
Du hast im ersten Post geschrieben,
dass dein Problem die Email ist,
jetzt ist es plötzlich das Eingabe-Formular...
Wie wäre es mit einem Link zur betroffenen Seite? -
sneppa schrieb:
Du hast im ersten Post geschrieben,
dass dein Problem die Email ist,
jetzt ist es plötzlich das Eingabe-Formular...
Wie wäre es mit einem Link zur betroffenen Seite?
Falsch verstanden. Das Formular ist richtig, wird nur falsch angezeigt. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage