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 27.10.2019 um 13:38:34 Uhr
Code-Tags Typ PHP hinzugefügt und Code formatiert

Content-ID: 508951

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

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

maretz
maretz 26.10.2019 um 18:10:58 Uhr
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
jensgebken
jensgebken 26.10.2019 aktualisiert um 18:27:08 Uhr
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
141575
141575 27.10.2019 aktualisiert um 10:30:25 Uhr
Goto Top
jensgebken
jensgebken 27.10.2019 um 11:15:20 Uhr
Goto Top
ich hab´s nun so gemacht

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

die objekte werden zwar angezeigt - aber nur hintereinander
141575
141575 27.10.2019 aktualisiert um 11:19:42 Uhr
Goto Top
Du hast den Text nicht gelesen, vor allem den Abschnitt mit den Headern, dann wüsstest du warum das so ist...
jensgebken
jensgebken 27.10.2019 aktualisiert um 11:39:45 Uhr
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);  
141575
141575 27.10.2019 aktualisiert um 12:11:48 Uhr
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 ...
jensgebken
jensgebken 27.10.2019 aktualisiert um 15:47:36 Uhr
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
141575
141575 27.10.2019 aktualisiert um 16:54:52 Uhr
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));  
?>
jensgebken
jensgebken 27.10.2019 aktualisiert um 17:03:03 Uhr
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?
maretz
maretz 27.10.2019 um 17:28:48 Uhr
Goto Top
ohne jetzt den ganzen krma zu lesen - aber kann es sein das du mal html und mal über text-only mails redest?
jensgebken
jensgebken 27.10.2019 aktualisiert um 17:37:55 Uhr
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';
jensgebken
jensgebken 27.10.2019 aktualisiert um 17:46:09 Uhr
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);
141575
141575 27.10.2019 aktualisiert um 19:25:56 Uhr
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!
maretz
maretz 27.10.2019 um 19:47:57 Uhr
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...
Cubic83
Cubic83 27.10.2019 um 21:36:28 Uhr
Goto Top
Hallo,

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

mfG
jensgebken
jensgebken 27.10.2019 um 22:00:02 Uhr
Goto Top
Hatte ich auch schon probiert – funktioniert nicht
Cubic83
Cubic83 27.10.2019 um 22:38:28 Uhr
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
jensgebken
jensgebken 28.10.2019 um 08:20:00 Uhr
Goto Top
Lieben Dank - so hangel ich mich erstmal weiter durch
TheJoker2305
TheJoker2305 28.10.2019 um 16:06:43 Uhr
Goto Top
owW - ohne weitere Worte ....
maretz
maretz 28.10.2019 um 17:27:42 Uhr
Goto Top
stimmt - dein erster Beitrag dazu und gleich so sinnfrei? DAS macht wirklich sprachlos...