Archiv verlassen und diese Seite im Standarddesign anzeigen : mailstring probleme
[neues Problem letzter Post ist reelevant]
Also ich hab n Problem mit nem mailstring. Ich bin grad dabei einen Newsletter zu machen(HTML-Newsletter) und er schreibt mir das was ich per while Schleife in den mailstring eingebe nicht aus. also hier ist der mailstring:
$betreff = $_POST['i_betreff'];
$nachricht ="
<html>
<head>
<title>Newsletter</title>
</head>
<body bgcolor=\"blue\" text=\"white\">
<font face=\"arial\" size=\"4\">Newsletter</font>
<table>
<tr>
<td colspan=\"2\"><img src=\"pix/logo-newsletter.jpg\"></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>".$_POST['h_text1DE']."</td>
</tr>";
$zeige = mysql_query($anzeige);
if(is_resource($zeige) && mysql_num_rows($zeige) > 0)
{
while($arr2 = mysql_fetch_assoc($zeige))
{
$nachricht .="
<tr>
<td colspan=\"2\">".$arr2['artikelBez']."</td>
</tr>
<tr>
<td><img border=\"0\" src=\"incl/show_image.php?id=".$arr2['id']."&type=s\"
alt=\"[".$arr2['marke']."-".$arr2['artikelBez']."]\" width=\"110px\"></td>
<td>".$arr2['langtext']."</td>
</tr>";
}
}
$nachricht .="
<tr>
<td>".$_POST['h_text2DE']."</td>
</tr>
</table>
</body>
</html>";
$Header = "MIME-Version: 1.0\n";
$Header .= "Content-type: text/html; charset=iso-8859-1\n";
$Header .= "From: emailadresse\n";
echo'Newsletter wurde versendet';
mail('emailaresse', $betreff, $nachricht, $Header);
mail('emailaresse', $betreff, $nachricht, $Header);
Ich bedank mich schonmal für jede Hilfe komm echt nicht mehr weiter
Original geschrieben von Anbu
komm echt nicht mehr weiter
Wenn du dir nicht langsam mal eine Debugging-Strategie überlegst, dann wirst du nie weiter kommen - sondern bis in alle Ewigkeit wegen solchem Kleinscheiss andere Fragen müssen ...
Wieso gehst du stillschweigend davon aus, dass deine Query erfolgreich war und auch Datensätze zurücklieferte - wieso verflixt noch mal überprüfst du das nicht?
Ich hab meine querys schon überpfüft und sie geben mir die richtigen ergebnisse Zurück.
Original geschrieben von Anbu
Ich hab meine querys schon überpfüft
Und wo und wie hast du das gemacht?
In deinem Code sehe ich nichts davon.
^^ hab vor dem mailstring ne art vorschau für den Kunden und da benutz ich den selben query. mit anderem namen natürlich. Und da klappt alles perfekt. Die Bilder und der Text werden formatiert angezeigt.
:confused:
Füge doch mal unter
$zeige = mysql_query($anzeige);
das folgende in deinen Code ein:
if(!zeige) die('Verflixt bin ich blöd, hab ich mir wieder mal nur eingebildet,
meine Query wäre fehlerfrei!');
if(mysql_num_rows($zeige) == 0) die('Verflixt bin ich blöd, hab ich mir wieder mal
nur eingebildet, meine Query würde Ergebnisse zurückliefern!');
- und poste dann hier, welche Ausgabe du bekommst.
:mad: :eek:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/hahi/html/ssl/IQshop_temp/newsl.php on line 306
Verflixt bin ich blöd, hab ich mir wieder mal nur eingebildet, meine Query würde Ergebnisse zurückliefern!
............ich sag nichts
es lag an ner scheiß variable die beim zweiten Post natürlich net mehr da war...tu sie jetzt in ein hidden field naja
danke :D
Also ein weiteres Problem.....
Mein HTML-Newsletter wird an zwar an die E-mail angehängt die Datei endung ist aber dat :confused:
Ich weiß net was ich im Header machen muss das es richtig funktioniert. also mein Header sieht bisjetzt so aus:
$Header .= "Content-Description: PHP Generated Data\n";
$Header .= "Content-type: text/html; charset=iso-8859-1\n";
$Header .= "From: Emailadresse <".c_norepMail.">\n";
was fehlt da noch?
penizillin 22-03-2007, 16:11 ich sehe keinen anhang, du verschickst einfach eine html-mail.
frag dein mailprogramm.
oh wie verschickt man dann einen Anhang???????
penizillin 22-03-2007, 16:35 man fragt google. es antwortet.
wozu willst du denn html als anhang verschicken? das kann man doch schön im mailclient darstellen..
jahlives 22-03-2007, 16:37 oh wie verschickt man dann einen Anhang???????
Indem man in den Headern der Email diese als Multipart definiert. Ausserdem muss im Header angegeben werden, wie die Boundary für die einzelnen Emailteile ausschaut.
Jeder Teil einer Email schaut dann folgendermassen aus
boundary
Header für den Teil abgeschlossen mit doppelten CRLF
Inhalt des Teils
boundary
//nächster Emailteil
[...]
Anhänge z.B. Bilder musst du zur Übertragung als base64 encoden, dann den enstandenen String mittels chunklen() auf die für Email korrekte Länge pro Zeile beschneiden.
Zusammen mit den Headern könnte das so aussehen
boundary
Content-type: image/jpg
Content-transfer-ecncoding: base64
//hier müssen 2 CRLF stehen
echo $deinString;
boundary
Gruss
tobi
Danke für die Mühe hat geklappt :cool:
Grüße Julian
hmm hab bemerkt das das doch nicht wirklich geklappt hat also ich hab jetzt boundarys benutzt. Wenn ich jetzt meine mail an einen client wie outlook schicke zeigt er mir nur den quelltext und den html-quellcode an mehr nicht. und wenn ich sie an einen webclient wie hotmail schicke zeigt er mir gar nichts an.
also hier kommt mein maistring sammt header:
$Header .= "Content-Description: PHP Generated Data\n";
$Header .= "Content-Type: multipart/alternative;\r\n";
$Header .= "From: email <".c_norepMail.">\n";
$Header .= "boundary=\"04CCAee0854\"\r\n";
$nachricht .= "\n--04CCAee0854\r\n";
$nachricht .= "Content-Type: text/plain; charset=iso-8859-1\r\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$nachticht .= "".$_POST['h_text2DE']."";
$anzeige1 = "SELECT ".table1.".id,".table2.".langtext,".table2.".artikelBez,".table7.".img
FROM ".table1." INNER JOIN ".table2." ON ".table1.".id = ".table2.".artikelID
INNER JOIN ".table7." ON ".table1.".id = ".table7.".artikelID
WHERE ".table1.".id = ".$_POST['h_a']."
AND sprachID = 1 GROUP BY ".table1.".id";
$zeige1 = mysql_query($anzeige1);
if(is_resource($zeige1) && mysql_num_rows($zeige1) > 0)
{
while($arr3 = mysql_fetch_assoc($zeige1))
{
$nachricht .="
".$arr3['artikelBez']."
".nl2br($arr3['langtext'])."
--------------------------------------------";
}
}
$nachricht .= "".$_POST['h_text2DE']."\r\n";
$nachricht .= "--04CCAee0854\r\n";
$nachricht .= "Content-type: text/html; charset=iso-8859-1\r\n";
$nachricht .= "Content-type: image/jpg; charset=iso-8859-1\r\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$nachricht .= "
<html>
<head>
<link href=\"domain/css/style.css\" rel=\"stylesheet\" type=\"text/css\">
<title>domain Newsletter</title>
</head>
<body bgcolor=\"white\" text=\"white\">
<table class=\"main\">
<tr>
<td align=\"center\">
<img src=\"domain/pix/uploads/logo-newsletter.jpg\"></td>
<td align=\"right\">".date("d.m.Y",$datum)."</td>
</tr>
<tr>
<td align=\"center\"><font face=\"arial\" size=\"120px\">
<a href=\"https://domain\" target=\"_blank\" class=\"gross\">>>domain<<</a></td>
</tr>
<tr>
<td align=\"center\"><span class=\"gross\">Newsletter</span></font></td>
</tr>
<tr>
<td><span class=\"textbo\">".$_POST['h_text1DE']."</span></td>
</tr>";
$anzeige1 = "SELECT ".table1.".id,".table2.".langtext,".table2.".artikelBez,".table7.".img
FROM ".table1." INNER JOIN ".table2." ON ".table1.".id = ".table2.".artikelID
INNER JOIN ".table7." ON ".table1.".id = ".table7.".artikelID
WHERE ".table1.".id = ".$_POST['h_a']."
AND sprachID = 1 GROUP BY ".table1.".id";
$zeige1 = mysql_query($anzeige1);
if(is_resource($zeige1) && mysql_num_rows($zeige1) > 0)
{
while($arr3 = mysql_fetch_assoc($zeige1))
{
$nachricht .="
<tr>
<table class=\"main\">
<tr>
<td colspan=\"2\"> </td>
</tr>
<tr>
<td colspan=\"2\"><span class=\"lila\"><b><u>".$arr3['artikelBez']."</u></b></span></td>
</tr>
<tr>
<td width=\"10%\"><a href=\"domain/produkt_".$arr3['id'].".html\" target=\"_blank\">
<img border=\"0\" src=\"domain/website/incl/show_image.php?id=".$arr3['id']."&type=s\"
alt=\"[".$arr3['marke']."-".$arr3['artikelBez']."]\" width=\"110px\"></a></td>
<td width=\"90%\">".nl2br($arr3['langtext'])."</td>
</tr>
<tr>
<td colspan=\"2\"> </td>
</tr>
</table>
</tr>";
}
}
$nachricht .="
<table class=\"main\">
<tr>
<td><span class=\"textbo\">".$_POST['h_text2DE']."</span></td>
</tr>
<tr>
<td colspan=\"2\"> </td>
</tr>
</table>
</body>
</html>\r\n";
$nachricht .="--04CCAee0854--\r\n";
echo'Newsletter wurde versendet';
mail($empf, $betreff, $nachricht, $Header);
jahlives 27-03-2007, 12:28 Bitte bitte mit Schockosträuseln obendrauf: Brich deinen Code um !
So auf die Schnelle würde ich sagen, dass du dich entscheiden musst ob du \r\n oder \n als Zeilenende für die $Header nimmst. Mischen ist keine gute Idee. Ausserdem muss die letzte Headerzeile mit doppeltem \r\n oder doppeltem \n abgeschlosssen werden. Sonst kann ein Emailclient ned feststellen wo der Header aufhört und der Body beginnt.
Gruss
tobi
Habs doch schön umgebrochen find ich :p
hab jetzt nur noch \n drin und hab beim letzten Header auch n doppeltes /n hingemacht aber leider will es net funktionieren. Das alte Problem bleibt nur Text und Quellcode im outlook und nix im webclient :confused: kann mir das nicht erklären
jahlives 27-03-2007, 13:02 Mach mal einen Dump von
echo '<pre>';
var_dump($header);
echo '<br /><br />';
var_dump($nachricht);
echo '</pre>';
und poste das Ergebnis hier.
Gruss
tobi
Das kommt raus:
string(152) "Content-Description: PHP Generated Data
Content-Type: multipart/alternative;
From: email
boundary="04CCAee0854"
"
string(1090) "
--04CCAee0854
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
--04CCAee0854
Content-type: text/html; charset=iso-8859-1
Content-type: image/jpg; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
jahlives 27-03-2007, 13:11 Also die Absenderadresse sieht schonmal merkwürdig aus...
und wo ist der Content ??????
Das sind nur die Header der gesamten Email und die Header der einzelnen Parts.
Du unterschlägst den Content ! Oder wenn das der dump von $nachricht ist, dann fehlt dir irgendwie der gesamte Inhalt.
Gruss
tobi
p.s. hänge den Dump wenn er zu gross ist doch als Textfile an den Thread
Was fehlt den????????
$Header .= "Content-Description: PHP Generated Data\n";
$Header .= "Content-Type: multipart/alternative;\n";
$Header .= "From: <".c_norepMail.">\n";
$Header .= "boundary=\"04CCAee0854\"\n\n";
$nachricht .= "\n--04CCAee0854\n";
$nachricht .= "Content-Type: text/plain; charset=iso-8859-1\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\n";
$nachticht .= hier fängt die textmail an;
$nachricht .= "--04CCAee0854\r\n";
$nachricht .= "Content-type: text/html; charset=iso-8859-1\n";
$nachricht .= "Content-type: image/jpg; charset=iso-8859-1\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\n";
$nachricht .= hier fängt die html an
$nachricht .="--04CCAee0854--\n";
jahlives 27-03-2007, 13:29 Was fehlt den????????
Der gesamte Inhalt der Email. Also dein HTML Teil und das Plain Text Teil. Und du mischt immer noch \n und \r\n
das mit dem r hab ich grad gemerkt habs rausgemacht.
Der html teil und der text fehlt aber nicht weil ich ihn ja in der mail sehe ich seh den text und den quellcode. komisch.
Original geschrieben von Anbu
Der html teil und der text fehlt aber nicht weil ich ihn ja in der mail sehe ich seh den text und den quellcode.
Er fehlt hier, weil du ihn trotz wiederholter Aufforderung, ihn hier zur Begutachtung einzustellen, hier noch immer nicht eingestellt hast.
komisch.
Ja, total komisch - das manche Leute noch nicht mal in der Lage sind, auf Rückfragen einzugehen.
Also der dump nochmal mit inhalt
string(152) "Content-Description: PHP Generated Data
Content-Type: multipart/alternative;
From: Newsletter
boundary="04CCAee0854"
"
string(3541) "
--04CCAee0854
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Zartcreme, 150ml Dose
Mit der bebe Zartcreme startete die Marke bereits 1961 und heute ist die Creme ein "Klassiker" im Babypflegeregal.
Die Reinigungs- und Pflegeprodukte für Babys
und Kleinkinder sind aber nicht nur für die zarte Babyhaut ideal. Auch viele junge Frauen verwenden
bebe® Zartpflege.
--------------------------------------------
sanft, Shower + Shampoo, 200ml
--------------------------------------------
sanfte Milch, 400ml
--------------------------------------------Tschüss
--04CCAee0854
Content-type: text/html; charset=iso-8859-1
Content-type: image/jpg; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
27.03.2007
Newsletter
Hallo
Zartcreme, 150ml Dose
[-Zartcreme, 150ml Dose]
Mit der bebe Zartcreme startete die Marke bereits 1961 und heute ist die Creme ein "Klassiker" im Babypflegeregal.
Die Reinigungs- und Pflegeprodukte für Babys und
Kleinkinder sind aber nicht nur für die zarte Babyhaut ideal. Auch viele junge Frauen verwenden
bebe® Zartpflege.
sanft, Shower + Shampoo, 200ml
[-sanft, Shower + Shampoo, 200ml]
sanfte Milch, 400ml
[-sanfte Milch, 400ml]
Tschüss
--04CCAee0854-- "
Original geschrieben von Anbu
--04CCAee0854
Content-type: text/html; charset=iso-8859-1
Content-type: image/jpg; charset=iso-8859-1
...
Also, wenn du dich noch nicht mal entscheiden kannst, was das zwischen dieser und der nächsten Boundary stehende sein soll - wieso soll es dann der Mailclient können ...?
jahlives 27-03-2007, 13:44 Den letzten Boundary solltest du auch mit doppeltem \n oder \r\n abschliessen (gemäss RFC ist es \r\n und nicht nur \n)
Und das
Content-type: text/html; charset=iso-8859-1
Content-type: image/jpg; charset=iso-8859-1
ist ja wirklich super :rolleyes:
Gruss
tobi
Hab das
Content-type: text/html; charset=iso-8859-1
Content-type: image/jpg; charset=iso-8859-1
rausgemacht steht jetzt nur onch text/html da.
Also hab jetzt beim letzten boundary die beiden abschließenden tags rein (\r\n).
klappt aber immernoch nicht
:confused:
hier nochmal der dump:
string(152) "Content-Description: PHP Generated Data
Content-Type: multipart/alternative;
From: Newsletter
boundary="04CCAee0854"
"
string(2665) "
--04CCAee0854
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Batida de Coco - Trüffel, 100g
Feine Batida de Coco-Trüffel-Füllung,
umhüllt von knackiger Edel-Vollmilchschokolade
--------------------------------------------
Marc de Champagne - Trüffel, 100g
Feine Marc de Champagne-Trüffel-Füllung,
umhüllt von knackiger Vollmilchschokolade
--------------------------------------------fasdf
--04CCAee0854
Content-type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
27.03.2007
Newsletter
sadfsdf
Batida de Coco - Trüffel, 100g
[-Batida de Coco - Trüffel, 100g] Feine Batida de Coco-Trüffel-Füllung,
umhüllt von knackiger Edel-Vollmilchschokolade
Marc de Champagne - Trüffel, 100g
[-Marc de Champagne - Trüffel, 100g] Feine Marc de Champagne-Trüffel-Füllung,
umhüllt von knackiger Vollmilchschokolade
fasdf
--04CCAee0854-- "
Header samt mailstr:
$Header .= "Content-Description: PHP Generated Data\n";
$Header .= "Content-Type: multipart/alternative;\n";
$Header .= "From: Newsletter <".c_norepMail.">\n";
$Header .= "boundary=\"04CCAee0854\"\n\n";
$nachricht .= "\n--04CCAee0854\n";
$nachricht .= "Content-Type: text/plain; charset=iso-8859-1\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\n";
$nachticht .= Text;
$nachricht .= "\n--04CCAee0854\n";
$nachricht .= "Content-type: text/html; charset=iso-8859-1\n";
$nachricht .= "Content-Transfer-Encoding: 8bit\n";
$nachricht .= " html;
$nachricht .="--04CCAee0854--\r\n";
|