Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
mailstring probleme [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mailstring probleme


 
Anbu
22-03-2007, 13:54 
 
[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>&nbsp;</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

 
wahsaga
22-03-2007, 13:58 
 
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?

 
Anbu
22-03-2007, 14:01 
 
Ich hab meine querys schon überpfüft und sie geben mir die richtigen ergebnisse Zurück.

 
wahsaga
22-03-2007, 14:01 
 
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.

 
Anbu
22-03-2007, 14:11 
 
^^ 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:

 
wahsaga
22-03-2007, 14:11 
 
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.

 
Anbu
22-03-2007, 14:18 
 
: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

 
Anbu
22-03-2007, 14:23 
 
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

 
Anbu
22-03-2007, 16:04 
 
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.

 
Anbu
22-03-2007, 16:22 
 
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

 
Anbu
22-03-2007, 16:56 
 
Danke für die Mühe hat geklappt :cool:


Grüße Julian

 
Anbu
27-03-2007, 12:20 
 
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\">&nbsp;</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\">&nbsp;</td>
</tr>
</table>
</tr>";
}
}
$nachricht .="
<table class=\"main\">
<tr>
<td><span class=\"textbo\">".$_POST['h_text2DE']."</span></td>
</tr>
<tr>
<td colspan=\"2\">&nbsp;</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

 
Anbu
27-03-2007, 12:59 
 
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

 
Anbu
27-03-2007, 13:08 
 
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

 
Anbu
27-03-2007, 13:22 
 
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

 
Anbu
27-03-2007, 13:31 
 
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.

 
wahsaga
27-03-2007, 13:41 
 
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.

 
Anbu
27-03-2007, 13:41 
 
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-- "

 
wahsaga
27-03-2007, 13:43 
 
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

 
Anbu
27-03-2007, 13:51 
 
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";

 
Anbu
27-03-2007, 15:14 
 
hat keiner ne antwort?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:36 Uhr.