jensgebken
Goto Top

SQL Statement als email versenden

Hallo Gemeinschaft,

habe folgendes Problem - möchte den Inhalt eines Statements in eine Email bekommen - könnt ihr mir dabei bitte helfen


foreach (($sqlop) as $row) {
   echo $row['orders_id']." ".$row['products_id']."<br />";  
   echo "E-Mail: ".$row['products_name']."<br /><br />";  
  
}

$empfaenger = "$usermai";  
$betreff = "Bestaetigung";  
$from = "From: Vorname Nachname <mir@web.de>";  
$text = "Lieben Dank".... und hier soll dann der Inhalt von der foreach schleife rein;  
 
mail($empfaenger, $betreff, $text, $from);
Kommentar vom Moderator tomolpi am Oct 27, 2019 um 12:38:34 Uhr
Code-Tags Typ PHP hinzugefügt und Code formatiert

Content-Key: 508951

Url: https://administrator.de/contentid/508951

Printed on: April 19, 2024 at 14:04 o'clock

Member: maretz
maretz Oct 26, 2019 at 16:10:58 (UTC)
Goto Top
sorry - aber wo ist dein problem? im zweifel einfach in deiner foreach nen String definieren und anhängen...
$deinMailtext = „“;
und in der foreach dann
$deinMailtext .= $row[wasauchimmer].“<br>“;

und das dann unten raushauen
Member: jensgebken
jensgebken Oct 26, 2019 updated at 16:27:08 (UTC)
Goto Top
lieben Dank - nur kommt der text nun in der email nun so an - also kein zeilenvorschub

5</br>0</br>0</br>0</br>0</br>1</br>


kannst du mir dabei bitte nochmal helfen
Mitglied: 141575
141575 Oct 27, 2019 updated at 09:30:25 (UTC)
Goto Top
Member: jensgebken
jensgebken Oct 27, 2019 at 10:15:20 (UTC)
Goto Top
ich hab´s nun so gemacht

$deinMailtext .= $mod."\r\n";

die objekte werden zwar angezeigt - aber nur hintereinander
Mitglied: 141575
141575 Oct 27, 2019 updated at 10:19:42 (UTC)
Goto Top
Du hast den Text nicht gelesen, vor allem den Abschnitt mit den Headern, dann wüsstest du warum das so ist...
Member: jensgebken
jensgebken Oct 27, 2019 updated at 10:39:45 (UTC)
Goto Top
ich hab´s gelesen - weiss aber nicht was ich da nun anders machen soll

das Beispiel funktioniert - wordwrap brauche ich nicht, weil weniger als 70 Zeichen
// Die Nachricht
$nachricht = "Zeile 1\r\nZeile 2\r\nZeile 3";  

// Falls eine Zeile der Nachricht mehr als 70 Zeichen enthälten könnte,
// sollte wordwrap() benutzt werden
$nachricht = wordwrap($nachricht, 70, "\r\n");  

// Verschicken
mail('test@wweb.de', 'Mein Betreff', $nachricht);  
Mitglied: 141575
141575 Oct 27, 2019 updated at 11:11:48 (UTC)
Goto Top
ich hab´s gelesen - weiss aber nicht was ich da nun anders machen soll
Offensichtlich nicht da du meinen Hinweis zu den Headern auch einfach überliest/ignorierst.
Siehe Abschnitt
// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden
Und das alles fehlt bei dir !!!!!

Also wie dumm kann man sich eigentlich noch stellen?? Koppschütel ...
Member: jensgebken
jensgebken Oct 27, 2019 updated at 14:47:36 (UTC)
Goto Top
... wo ist denn der Unterschied zu dem Beispiel und meinem zusammengesetzten Datensatz

$deinMailtext .= $mod."\r\n";

ich könnte doch bei den Variablen, die aus der DB kommen die gleichen Begriffe nehmen, so dass $deinMailtext genauso aussieht, wie in dem Beispiel - ich verstehe dann nicht den Unterschied - dort wird auch kein content type header verwendet
Mitglied: 141575
141575 Oct 27, 2019 updated at 15:54:52 (UTC)
Goto Top
Zitat von @jensgebken:

... wo ist denn der Unterschied zu dem Beispiel und meinem zusammengesetzten Datensatz

$deinMailtext .= $mod."\r\n";

ich könnte doch bei den Variablen, die aus der DB kommen die gleichen Begriffe nehmen, so dass $deinMailtext genauso aussieht, wie in dem Beispiel - ich verstehe dann nicht den Unterschied - dort wird auch kein content type header verwendet
Doch, du brauchst eine Brille!

back-to-topBeispiel #NR 5

https://www.php.net/manual/de/function.mail.php
<?php
// mehrere Empfänger
$empfaenger  = 'max@example.com, moritz@example.com'; // beachte das Komma  

// Betreff
$betreff = 'Geburtstags-Erinnerungen für August';  

// Nachricht
$nachricht = '  
<html>
<head>
  <title>Geburtstags-Erinnerungen für August</title>
</head>
<body>
  <p>Hier sind die Geburtstage im August:</p>
  <table>
    <tr>
      <th>Person</th><th>Tag</th><th>Monat</th><th>Jahr</th>
    </tr>
    <tr>
      <td>Max</td><td>3.</td><td>August</td><td>1970</td>
    </tr>
    <tr>
      <td>Moritz</td><td>17.</td><td>August</td><td>1973</td>
    </tr>
  </table>
</body>
</html>
';  

// für HTML-E-Mails muss der 'Content-type'-Header gesetzt werden  
$header = 'MIME-Version: 1.0';  
$header = 'Content-type: text/html; charset=iso-8859-1';  

// zusätzliche Header
$header = 'To: Simone <simone@example.com>, Andreas <andreas@example.com>';  
$header = 'From: Geburtstags-Erinnerungen <geburtstag@example.com>';  
$header = 'Cc: geburtstagsarchiv@example.com';  
$header = 'Bcc: geburtstagscheck@example.com';  

// verschicke die E-Mail
mail($empfaenger, $betreff, $nachricht, implode("\r\n", $header));  
?>
Member: jensgebken
jensgebken Oct 27, 2019 updated at 16:03:03 (UTC)
Goto Top
In dem Beispiel von oben (11:39) wird kein header verwendet und die Ausgabe in der mail erfolgt untereinander - wieso klappt das dort ohne header?
Member: maretz
maretz Oct 27, 2019 at 16:28:48 (UTC)
Goto Top
ohne jetzt den ganzen krma zu lesen - aber kann es sein das du mal html und mal über text-only mails redest?
Member: jensgebken
jensgebken Oct 27, 2019 updated at 16:37:55 (UTC)
Goto Top
nein - ich habe den code vom chicken verwendet

// Die Nachricht
$nachricht = "Zeile 1\r\nZeile 2\r\nZeile 3";  

// Falls eine Zeile der Nachricht mehr als 70 Zeichen enthälten könnte,
// sollte wordwrap() benutzt werden
$nachricht = wordwrap($nachricht, 70, "\r\n");  

// Verschicken
mail('test@wweb.de', 'Mein Betreff', $nachricht);  

und dort klappt die Anzeige in der Mail Ausgabe - ich verstehe nicht, weshalb mein zusammengebauter Text dann nicht so angezeigt wird, zumal in der Variable die gleichen Steuerzeichen verwendet werden wie im Beispiel

$deinMailtext .= $mod.'\r\n';
Member: jensgebken
jensgebken Oct 27, 2019 updated at 16:46:09 (UTC)
Goto Top
Das ist nun der vollständige Code
	foreach($articles as $article){

	$art = $article['Name'];  
	$anz = $article['Anzahl'];  
	$mod = $article['Model'];  
	$price = $article['Price'];  
	$tax = "19";  
	$final = $anz * $price;
	$deinMailtext .= $mod.'\r\n';  
        //$deinMailtext.=$mod."\r\n"; 
	    
if ($anz > 0){
    $sqlop = "INSERT INTO orders_products (orders_id, products_id, products_model, products_name, products_price, final_price, products_tax, products_quantity) values ('$orders_id', '$art','$mod','$mod', $price, '$final','$tax','$anz')";  
    $mysqli->query($sqlop);
}

	}


$empfaenger = "test@web.de";  
$betreff = "Die Mail-Funktion";  
$from = "From: Vorname Nachname <test@web.de>";  
$text = "Hier kommt der Text".$deinMailtext;  

mail($empfaenger, $betreff, $text ,  $from);
Mitglied: 141575
141575 Oct 27, 2019 updated at 18:25:56 (UTC)
Goto Top
Erstens <br /> Tags funktionieren nun mal nur in HTML Mails die du ja nun mal nicht erstellst weil du keinen Header definierst siehe dein Kommentar wo die Tags übrigens auch noch falsch sind (Slash an der falschen Stelle)
5</br>0</br>0</br>0</br>0</br>1</br>
Zweitens Funktioniert dein Code nicht weil du Escape-Sequenzen innerhalb von Hochkommas verwendest wo sie nicht wirken, diese wirken nur innerhalb von normalen Anführungszeichen. Zeilenumbrüche wirken nur innerhalb von Plaintextmails und nicht in HTML-Mails.
Du hast also von Tuten und Blasen keine Ahnung,
und lässt dir nicht die Bohne sagen, sorry.
nein - ich habe den code vom chicken verwendet
Nein das ist nicht meiner den hast du selbst verbockt.

Wenn du unsere Anmerkungen einfach immer wieder ignorierst gehörst du meines Erachtens in die Anstalt mit den weissen Kitteln, sorry aber das ist jetzt wirklicher Kindergarten.

Das bringt bei dem jung offensichtlich nix mehr wenn man seine vorherigen Posts mal so liest wird einem echt schlecht 🤮🤮🤮.

Ich bin raus.

p.s. Lesen bildet!
Member: maretz
maretz Oct 27, 2019 at 18:47:57 (UTC)
Goto Top
Eine Frage die sich mir jetzt langsam aufdrängt: Sind das Hausaufgaben oder planst du wirklich sowas für produktiv? Versteh das nicht falsch - nur bei Hausaufgaben wäre es ja nich schlimm wenn man sicherheitsfragen ignoriert, guckt eh idR kein Lehrer drauf. Bei nem prod. Einsatz wäre das was anderes...
Member: Cubic83
Cubic83 Oct 27, 2019 at 20:36:28 (UTC)
Goto Top
Hallo,

soweit ich weiß gehören \r\n immer zwischen Gänsefüße und nicht zwischen Apostroph.

mfG
Member: jensgebken
jensgebken Oct 27, 2019 at 21:00:02 (UTC)
Goto Top
Hatte ich auch schon probiert – funktioniert nicht
Member: Cubic83
Cubic83 Oct 27, 2019 at 21:38:28 (UTC)
Goto Top
Dann brich es doch runter auf den kleinsten gemeinsamen Nenner. Was erhällst du bei:

$deinMailtext = "Hallo\r\n";  
$deinMailtext .= "wie\r\n";  
$deinMailtext .= "geht\r\n";  
$deinMailtext .= "es\r\n";  
$deinMailtext .= "dir?";   
  
$empfaenger = "mail";  
$betreff = "Die Mail-Funktion";  
$from = "From: Vorname Nachname <test@web.de>";  
$text = $deinMailtext;

mail($empfaenger, $betreff, $text , $from);
 
echo $text;

Wie schaust du dir das Result an? Mit einem E-Mail client? Welchem?

Das ist halt das Problem wenn du ohne Header arbeitest. Wen du dem Empfängerprogramm nicht sagst, was es mit den Daten machen soll, interpretiert es den Inhalt so, wie er möchte.

mfG
Member: jensgebken
jensgebken Oct 28, 2019 at 07:20:00 (UTC)
Goto Top
Lieben Dank - so hangel ich mich erstmal weiter durch
Member: TheJoker2305
TheJoker2305 Oct 28, 2019 at 15:06:43 (UTC)
Goto Top
owW - ohne weitere Worte ....
Member: maretz
maretz Oct 28, 2019 at 16:27:42 (UTC)
Goto Top
stimmt - dein erster Beitrag dazu und gleich so sinnfrei? DAS macht wirklich sprachlos...