MySQL Datenbankinhalt per PHP Mail senden?

3 Antworten

Woran genau hängt es denn? Kannst du die Daten auslesen mit PhP? Oder hast du Probleme mit der Automatisierung ? Oder weißt du nicht wie man eine Email mit php schickt ?


DougundPizza  05.08.2016, 04:45

So ich vermute mal das deine "finanzprojektnummer" ein unique Integer Wert ist, da brauchst du dann kein like. Das nimmt man sowie nur fürs Abgleichen einer Zeichenkette.

Bei deiner Email musst du Informationen die du in der DB ausliest in eine Variable schreiben. Hängst es einfach einem String immer an und sendest dann den Content.

Mickan1994 
Beitragsersteller
 03.08.2016, 05:54

also eine email mittels phpmail kann ich versenden. Die Abfrage von Daten aus der Datenbank kriege ich auch hin. Die Automatisierung kann ich über Cronjobs. Aber die Verbindung klappt nicht also eine eMail mit 3 Variablen aus der Datenbankabfrage wenn das heutige Datum dem Datum in der Spalte Wiedervorlage entspricht. Das klappt nicht. vielleicht hast du ein paar tipps oder sogar ein Skript

Mickan1994 
Beitragsersteller
 03.08.2016, 17:28
@Mickan1994

Aktuell habe ich jetzt folgenden Code... Wenn ich die eMail Funktion ausklammer und eine fixe Finanzprojektnummer einsetze dann wird mir eine Tabelle angezeigt mit den gewollten Daten bezogen auf die fixe Finanzprojektnummer.

Sobald ich die eMailFunktion wieder einklammer, bekomme ich eine leere eMail. Dabei möchte ich eine eMail mit dem Inhalt bekommen, der mir bei Ausklammerung in Tabellenform angezeigt wird. Wo liegt hier der Fehler vor?

<?php
$host = "host";
$user = "User";
$pass = "Passwort"; $con = mysql_connect($host,$user,$pass) or die (mysql_error()) ;
mysql_select_db("datenbank",$con) or die (mysql_error()) ;
$sql = "
SELECT
mandant,finanzprojektnummer,wiedervorlage,beschreibung,erledigt
FROM
wiedervorlage
WHERE finanzprojektnummer Like 1234567
";
$query = mysql_query($sql);
echo "<ul>";
WHILE($row = mysql_fetch_assoc($query))
{
echo '<table border=1>';
{
echo '<tr>';
echo '<td>' . $row['mandant'] . '</td>'; echo '<td>' . $row['finanzprojektnummer'] . '</td>';
echo '<td>' . $row['wiedervorlage'] . '</td>';
echo '<td>' . $row['beschreibung'] . '</td>';
echo '<td>' . $row['erledigt'] . '</td>';
echo '</tr>';
}
echo '</table>';
} echo "</ul>"; $empfaenger = 'empfaenger@provider.de';
$betreff = 'Neue Nachricht';
$nachricht = $row['beschreibung'];
$header = "FROM: Absender <email@domain.de>"; mail($empfaenger, $betreff, $nachricht, $header); ?>

In der Mail soll dann später Mandant, Finanzprojektnummer wiedervorlage und Beschreibung übertragen werden aber ich hab es zu testzwecken erstmal bei beschreibung belassen da das ja schon nicht funktioniert.

Hoffe jemand kann mir helfen bzw. einen Tipp geben ich sehe den Fehler nicht

kingbongo  03.08.2016, 18:25
@Mickan1994

Werden die Tabellendaten korrekt angezeigt? Wenn ja, dann packe alle row results mitsamt der html Formatierung in ein String (statt diese nur über echo auszugeben) und schick diesen String mit phpmailer als html email (die mail() funktion in PHP setzt falsche Header so das die Mail falsch ankommt oder im Spamfilter landet, diese also nicht benutzen, sondern Mails mit PHPMailer senden)

https://github.com/PHPMailer/PHPMailer

Mickan1994 
Beitragsersteller
 03.08.2016, 19:04
@kingbongo

Ich bin leider zu sehr Laie um zu verstehen wie genau du das meinst... Das mit phpMailer hattest du mir ja schonmal vorgeschlagen aber ich hatte da nicht verstanden wie ich meinen Code in den PhpMailerCode einfügen kann (trotz gefühltem 5000maligem Anschauen des Videos) :-D

showgirl1  03.08.2016, 22:56
@Mickan1994

Hallo,

du gibst deine Tabelle zum Test in der WHILE Schleife mit ECHO aus, diese ist aber vor deiner mail-Funktion geschlossen und die $row Variable daher leer -> leere Mail. Du musst dir das Ergebnis aus der Schleife in einer Variable zwischen speichern und diese Variable dann an den mail Body übergeben.

Mickan1994 
Beitragsersteller
 04.08.2016, 05:43
@showgirl1

Und wie genau mache ich das? Tut mir wirklich Leid ich bin leider zu sehr Laie :D

Script und PHPMailer Anleitung im Video

$conn = new mysqli($servername, $username, $password, $dbname);
$sql = "SELECT * FROM `table` WHERE DATE(`Wiedervorlage`) = CURDATE()";
$result = $conn->query($sql);
$message = '';
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$message .= $row['finanzprojektnummer'] . ':' . $row['beschreibung'] . '<\ br>';
}
}

sendMail( $message );

function sendMail($message){
//send message with phpmailer
}


https://youtube.com/watch?v=fcLXsxpk2dc



Mickan1994 
Beitragsersteller
 02.08.2016, 06:10

Tut mir Leid ich muss nochmal blöd fragen: wo setze ich dein Script oben ein? in die example.php Datei unter dem ganzen code vom a simple Example Beispiel?

Mickan1994 
Beitragsersteller
 03.08.2016, 17:30
@Mickan1994

Also meinen aktuellen Code habe ich mal oben als Kommentar bei "DougundPizza" gepostet. Ich kann den Kommentar irgendwie nicht kopieren. Vielleicht kann mir jemand helfen ich sehe den Fehler leider nicht

PSEUDOCODE um dir auf die Sprünge zu helfen:


result = sql_query(SELECT .. WHERE Wiedervorlage=heute());
text = "";
while(item = fetch_array(result)
{
text .= item["text"]; } send_as_mail(text);

Habe keine Ahnung was du genau versenden willst und wie das aussehen soll usw., aber denke der Code wird dir helfen ^^

Woher ich das weiß:Studium / Ausbildung – Informatikstudium

Mickan1994 
Beitragsersteller
 03.08.2016, 17:31

Also meinen aktuellen Code habe ich mal oben als Kommentar bei "DougundPizza" gepostet. Ich kann den Kommentar irgendwie nicht kopieren. Vielleicht kann mir jemand helfen ich sehe den Fehler leider nicht

Mickan1994 
Beitragsersteller
 03.08.2016, 05:52

Also ich habe in der Datenbank "wiedervorlage" unter anderem die spalten finanzprojektnummer, wiedervorlage und Beschreibung. Ich möchte jeden Tag, wenn das heutige Datum dem Datum in der Wiedervorlage Spalte entspricht, eine eMail erhalten mit finanzprojekt und der dazugehörigen Beschreibung. Muss keine besondere Formatierung sein, ich muss nur erkennen welche Beschreibung zu welchem Finanzprojekt gehört.

triopasi  03.08.2016, 10:33
@Mickan1994

Du hast oben doch nen Beispielcode. Kannste das nicht auf dein Projekt anpassen?

Mickan1994 
Beitragsersteller
 03.08.2016, 17:30
@triopasi

Also meinen aktuellen Code habe ich mal oben als Kommentar bei "DougundPizza" gepostet. Ich kann den Kommentar irgendwie nicht kopieren. Vielleicht kann mir jemand helfen ich sehe den Fehler leider nicht