foreach innerhalb eines Mailversands
Jnnbo
- php
2 Tabellenkalk0 Jnnbo0 Tabellenkalk0 Jnnbo
0 Jörg Reinholz0 Jnnbo0 Jörg Reinholz0 Jnnbo
Moin,
mein Mail Script funktion eigentlich ohne Probleme
$data = array();
$data['smtp'] = array();
$data['smtp']['host'] = $wes_smtp_host;
$data['smtp']['port'] = $wes_smtp_port;
$data['smtp']['username'] = $wes_smtp_username;
$data['smtp']['password'] = $wes_smtp_password;
$data['from'] = array('name' => $wes_kontakt_name, 'email' => $wes_kontakt_mail);
$data['to'] = array('name' => $wes_kontakt_name, 'email' => $wes_kontakt_mail);
$data['charset'] = 'utf-8';
$data['subject'] = "Erinnerungen";
$data['html'] = '
<html>
<head>
<title>'.$data['subject'].'</title>
</head>
<body>
<div>
<p></p>
</div>
</body>
</html>';
$smtp = new Swift_SmtpTransport($data['smtp']['host'], $data['smtp']['port']);
$smtp->setUsername($data['smtp']['username']);
$smtp->setPassword($data['smtp']['password']);
$mail = new Swift_Message($data['subject']);
$mail->setBody($data['html'])
->setCharset($data['charset'])
->setContentType("text/html")
->setFrom($data['from']['email'], $data['from']['name'])
->setTo($data['to']['email'], $data['to']['name']);
$swift = new Swift_Mailer($smtp);
$swift->send($mail,$recipient);
Ich möchte allerdings mit einem Versand mehrere Einträge zusammen verschicken, also benötige ich ein "foreach" innerhalb $data['html'], ich wollte es so zusammen bauen:
$data['html'] = '
<html>
<head>
<title>'.$data['subject'].'</title>
</head>
<body>
<div>
<p>'.foreach($test as $array){
nl2br($array['erinnerung'])
}.'</p>
</div>
/body>
</html>';
Allerdings erhalte ich nun ein Fehler, kann ich innerhalb von $data['html'] kein weiteres PHP einbinden?
Hallo,
Allerdings erhalte ich nun ein Fehler, kann ich innerhalb von $data['html'] kein weiteres PHP einbinden?
Was macht denn eigentlich der Punktoperator? Und hat dir nicht schon mal jemand erzählt, du solltest dir mal das EVA-Prinzip anschauen?
Gruß
Kalk
Hallo Tabellenkalk,
Was macht denn eigentlich der Punktoperator? Und hat dir nicht schon mal jemand erzählt, du solltest dir mal das EVA-Prinzip anschauen?
was hat denn mein Problem mit dem EVA-Prinzip zu tun? Überhaupt nichts! Das HTML muss an dieser Stelle zusammen gesetzt werden.
Hallo,
was hat denn mein Problem mit dem EVA-Prinzip zu tun? Überhaupt nichts!
Das seh ich anders. Die Zuweisung deines HTML-Strings ist bereits eine Art Ausgabe. Und du fängst da plötzlich, mit deinem Schleifenkonstrukt, wieder eine Verarbeitung an.
Gruß
Kalk
Hallo Tabellenkalk,
Das seh ich anders. Die Zuweisung deines HTML-Strings ist bereits eine Art Ausgabe. Und du fängst da plötzlich, mit deinem Schleifenkonstrukt, wieder eine Verarbeitung an.
ich habe es jetzt so umgesetzt: http://forum.selfhtml.org/self/2015/may/11/foreach-innerhalb-eines-mailversands/1640169#m1640169
Moin!
Allerdings erhalte ich nun ein Fehler, kann ich innerhalb von $data['html'] kein weiteres PHP einbinden?
Du meinst etwas wie
$data['html'] = '
<html>
<head>
<title>'.$data['subject'].'</title>
</head>
<body>
<div>
<p>'.foreach($test as $array){
nl2br($array['erinnerung'])
}.'</p>
</div>
/body>
</html>';
Theoretisch schon. Aber nicht so, wie Du es gezeigt hast, Schleifen gehen an der Stelle gar nicht, weil strings verbunden werden sollen und foreach keinen solchen liefert.
Sowas:
<?php
jobs[0]='Braten';
jobs[1]='Backen';
jobs[2]='Der Königin Kind holen';
$data['html'] = '
<html>
<head>
<title>Rumpelstilzchen</title>
</head>
<body>
<h1>ToDo</h1>
<ul><li>' . implode('</li><li>', $jobs) . '<li></ul>
</body>
</html>';
hingegen geht schon...
Jörg Reinholz
Hallo Jörg,
Theoretisch schon. Aber nicht so, wie Du es gezeigt hast, Schleifen gehen an der Stelle gar nicht, weil strings verbunden werden sollen und foreach keinen solchen liefert.
Sowas:
<?php jobs[0]='Braten'; jobs[1]='Backen'; jobs[2]='Der Königin Kind holen'; $data['html'] = ' <html> <head> <title>Rumpelstilzchen</title> </head> <body> <h1>ToDo</h1> <ul><li>' . implode('</li><li>', $jobs) . '<li></ul> </body> </html>';
wie bekomme ich aber mit meiner Abfrage so etwas hin? jobs[0] wenn ich das richtig verstehe ich dieses ein Array? Und meine Abfrage hat ja noch weitere Daten. Im Beispiel habe ich nur ein Wert genommen. Später gibt es 5
Datum Firma Name Status Nachricht
Moin!
wie bekomme ich aber mit meiner Abfrage so etwas hin? jobs[0] wenn ich das richtig verstehe ich dieses ein Array? Und meine Abfrage hat ja noch weitere Daten. Im Beispiel habe ich nur ein Wert genommen. Später gibt es 5
Wenn es Dir zu kompliziert wird, dann mache es Dir halt einfacher und baue die aus den Array-Elementen zu fertigenden Teilstrings zusammen bevor Du den ganz Großen zusammenklebst.
Man bekommt nämlich keine Extra-Punkte dafür, dass man es sich selbst schwer macht.
Jörg Reinholz
Hallo Jörg,
Wenn es Dir zu kompliziert wird, dann mache es Dir halt einfacher und baue die aus den Array-Elementen zu fertigenden Teilstrings zusammen bevor Du den ganz Großen zusammenklebst.
wenn ich dich richtig verstanden habe, dann soll ich das so umsetzten?
foreach($test as $array){
$test[] = htmlspecialchars($array['vorname']) ." ";
}
$data['html'] = '
<html>
<head>
<title>'.$data['subject'].'</title>
</head>
<body>
<div>
<p>'. implode($test) .'</p>
</div>
</body>
</html>';
Als Ausgabe erhalte ich: Test Test 1 Test 2
Man bekommt nämlich keine Extra-Punkte dafür, dass man es sich selbst schwer macht.
Meine Rede, aber dieses sehen hier im Forum einige anderes. Für mich muss ein Script erstmal nur funktionieren.
Moin!
Mit
implode(', ', $test)
oder
implode('<br>', $test)
wäre das Ergebnis wohl hübscher. So lange Du das mit den htmlspecialchars nicht 100 Zeilen weiter oben veranstaltest ist es ok.
Jörg Reinholz