CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
30.12.2009, 16:49:02
|
Anfänger
|
|
Registriert seit: Dec 2009
Alter: 50
Beiträge: 3
|
|
Probleme mit HTML eMail-Versand über PHP
Moin,
ich hab' ein kleines Problem mit dem Versand von HTML-eMail über ein PHP-Script...
Die Mail kommt an, wird aber nicht angezeigt.
Im Quelltext der Mail ist aber alles enthalten.
Mein Script:
PHP-Code:
<?php
//turn off error reporting --easily commented out for development, but keeps site visitors from seeing any random thrown errors
error_reporting(0);
// specify the recipients and subject
$to = "foo@bar.de";
$subject = "Neue email";
//grab all our vars from the form
extract($_POST);
//Let's start our headers
$headers = "From:$EMail\r\n";
$headers .= "Reply-To:$EMail\r\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";
$headers .= "X-Sender:foo@bar.de\r\n";
$headers .= "X-Mailer: PHP5\n";
$headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Normal
$headers .= "Return-Path:foo@bar.de\r\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n";
$headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
$message = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/html; charset=\"utf-8\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n";
$message .= "<html><head><title>Toller Titel</title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></head><body style=\"margin:0 0 0 0px; padding:0; background-color: #ffffff; font-family:Arial;font-size: 12px;\"><table>\n";
$message .= "<tr><td>Marke: </td><td>".stripslashes($_POST['Marke'])."</td></tr>\n";
// Viele andere Formulardaten :) //
$message .= "<tr><td>Kontaktaufnahme: </td><td>".stripslashes($_POST['Kontaktaufnahme'])."</td></tr>\n";
$message .= "</table></body></html>\n";
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";
$message .= "\n";
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";
/*deal with mulitple attachments */
foreach($_FILES as $file => $value) {
$_tmpname = $_FILES[$file]['tmp_name'];
$_filename = $_FILES[$file]['name'];
if (is_uploaded_file($_tmpname)) { //Do we have a file uploaded?
$fp = fopen($_tmpname, "rb"); //Open it
$data = fread($fp, filesize($_tmpname)); //Read it
$data = chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed
$message .= "------=MIME_BOUNDRY_main_message\n";
$message .= "Content-Type: application/octet-stream;\n\tname=\"" . $_filename . "\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n\tfilename=\"" . $_filename . "\"\n\n";
$message .= $data; //The base64 encoded message
$message .= "\n\n";
fclose($fp);
}
}
$message .= "------=MIME_BOUNDRY_main_message--\n";
@mail( $to, $subject, $message, $headers );
header("Location: http://www.meine-domain.de"); ?>
So sieht dann der Mail-Quelltext aus:
Code:
Received: (qmail 28982 invoked by uid 30); 30 Dec 2009 16:29:27 +0100
X-Mail-Scanner: Scanned by qSheff-II-2.1-r3 (http://www.enderunix.org/qsheff/)
Date: 30 Dec 2009 16:29:27 +0100
Message-ID: <20091230152927.28977.qmail@meinserver.de>
To: foo@bar.de
Subject: Neues Ankaufsangebot
From: phoenix@MeineDomain.de
Reply-To: phoenix@MeineDomain.de
MIME-Version: 1.0
Content-Type: multipart/related; type="multipart/alternative"; boundary="----=MIME_BOUNDRY_main_message"
X-Sender:foo@bar.de X-Mailer: PHP5
X-Priority: 3
X-Antivirus: avast! (VPS 091230-0, 30.12.2009), Inbound message
X-Antivirus-Status: Clean
This is a multi-part message in MIME format.
------=MIME_BOUNDRY_main_message
Content-Type: multipart/alternative; boundary="----=MIME_BOUNDRY_message_parts"
------=MIME_BOUNDRY_message_parts
type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><title>Toller Titel</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="margin:0 0 0 0px; padding:0; background-color: #ffffff; font-family:Arial;font-size: 12px;"><table>
<tr><td>Marke: </td><td>Citroen</td></tr>
<tr><td>Kontaktaufnahme: </td><td>bitte senden Sie mir eine E-Mail</td></tr>
</table></body></html>
------=MIME_BOUNDRY_message_parts--
------=MIME_BOUNDRY_message_parts--
------=MIME_BOUNDRY_main_message
Content-Type: application/octet-stream;
name="darkside3.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="meinbild1.jpg"
meinbild1-Base64-Daten...
------=MIME_BOUNDRY_main_message
Content-Type: application/octet-stream;
name="nde.gif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="meinbild2.jpg"
meinbild2-Base64-Daten...
------=MIME_BOUNDRY_main_message--
Hat jemand eine Idee warum die Mail nicht angezeigt wird?
Gruß,
Thomas
|
30.12.2009, 17:07:24
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Probleme mit HTML eMail-Versand über PHP
das skript stammt nicht von dir selbst, oder? bitte schau dir unsere Forenregeln an; insbes. punkt c. darüber hinaus: mit dem manuellen / selbstgestrickten versenden von eMails ärgert sich heute i.a. niemand mehr herum. nutze besser eine lösung wie swiftmailer.
cx
|
30.12.2009, 17:18:10
|
Anfänger
|
|
Registriert seit: Dec 2009
Alter: 50
Beiträge: 3
|
|
AW: Probleme mit HTML eMail-Versand über PHP
Das Script ist aus mehreren versch. Scripten zusammengebastelt und dann von mir überarbeitet worden.
Zudem stammt das aus sehr alten Forenbeiträgen.
Wenn ich den Content-Type auf Text/plain ändere, funktioniert es auch aber ich kann dann ja keine Tabelle verwenden.
Nur als HTML macht er nicht das, was ich will.
Fertige Scripte gibt es viele, da dauert das anpassen dann länger als neuschreiben.
Auserdem sind "Fertig-Scripte" langweilig... da lernt man ja nichts :)
|
30.12.2009, 17:28:42
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Probleme mit HTML eMail-Versand über PHP
Zitat:
Zitat von MC68060
Nur als HTML macht er nicht das, was ich will.
|
HTML-mails sind immer problematisch.
Zitat:
Zitat von MC68060
Fertige Scripte gibt es viele, da dauert das anpassen dann länger als neuschreiben.
|
1. schau dir swiftmailer genauer an - das ist mehr als ein fertiges skript.
2. bei einer komplexen mail-klasse wie swiftmailer gibt's i.d.r. keine notwendigkeit, etwas anzupassen.
3. ich glaube nicht, dass du das (aus dem handgelenk) hinbekommen würdest.
Zitat:
Zitat von MC68060
Auserdem sind "Fertig-Scripte" langweilig
|
ich teile diese einstellung weitgehend. beim mail-versand sieht's allerdings anders aus. wenn du das selbst machen / lernen willst... viel spass dabei. bitte bemühe unsere forensuche - zu dem thema gab's bereits unmengen threads.
cx
|
30.12.2009, 18:25:34
|
Anfänger
|
|
Registriert seit: Dec 2009
Alter: 50
Beiträge: 3
|
|
AW: Probleme mit HTML eMail-Versand über PHP
So, jetzt hab' ich's hinbekommen:
Der Content-Typ und der Boundary gehören in den Header der eMail... schon klappt das.
Falls jemand dieses Script verwenden möchte:
PHP-Code:
<?php
//turn off error reporting --easily commented out for development, but keeps site visitors from seeing any random thrown errors error_reporting(0); // specify the recipients and subject $to = "foo@bar.de"; $subject = "Neue email"; //grab all our vars from the form extract($_POST);
//Let's start our headers $headers = "From:$EMail\r\n"; $headers .= "Reply-To:$EMail\r\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n"; $headers .= "X-Sender:foo@bar.de\r\n"; $headers .= "X-Mailer: PHP5\n"; $headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Normal $headers .= "Return-Path:foo@bar.de\r\n"; $headers .= "This is a multi-part message in MIME format.\n"; $headers .= "------=MIME_BOUNDRY_main_message \n"; $headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\n"; $headers .= "------=MIME_BOUNDRY_message_parts\n"; $headers .= "Content-Type: text/html charset: utf-8"; $message .=" <html> <head> </head> <body> <table> <tr><td>Marke: </td><td>".stripslashes($_POST['Marke'])."</td></tr>
// Viele viele bunte Formular-Daten...
<tr><td>Kontaktaufnahme: </td><td>".stripslashes($_POST['Kontaktaufnahme'])."</td></tr> </table> </body> </html>"; $message .= "\n"; $headers .= "------=MIME_BOUNDRY_message_parts--\n"; $message .= "\n"; /*deal with mulitple attachments */ foreach($_FILES as $file => $value) { $_tmpname = $_FILES[$file]['tmp_name']; $_filename = $_FILES[$file]['name']; if (is_uploaded_file($_tmpname)) { //Do we have a file uploaded? $fp = fopen($_tmpname, "rb"); //Open it $data = fread($fp, filesize($_tmpname)); //Read it $data = chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed $message .= "------=MIME_BOUNDRY_main_message\n"; $message .= "Content-Type: application/octet-stream;\n\tname=\"" . $_filename . "\"\n"; $message .= "Content-Transfer-Encoding: base64\n"; $message .= "Content-Disposition: attachment;\n\tfilename=\"" . $_filename . "\"\n\n"; $message .= $data; //The base64 encoded message $message .= "\n\n"; fclose($fp); } } $headers .= "------=MIME_BOUNDRY_main_message--\n"; // send message to recipients @mail( $to, $subject, $message, $headers ); // redirect to thank you page after sending email header("Location: http://www.meinedomain.de"); ?>
|
30.12.2009, 18:31:23
|
SELFPHP Profi
|
|
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
|
|
AW: Probleme mit HTML eMail-Versand über PHP
ich würde wenigstens eine fehlerbehandlung einbauen, denn hiermit
Zitat:
Zitat von MC68060
PHP-Code:
@mail( [...] );
|
hast du null erfolgskontrolle. gerade mail( ) ist höchst unzuverlässig...
cx
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:24:14 Uhr.
|