Frage von Mickan1994, 81

MySQL Datenbankinhalt per PHP Mail senden?

Ich würde gerne gewisse Inhalte aus einer SQL Datenbank per eMail versenden wenn das Datum in der Spalte "Wiedervorlage" das heutige ist. Das ganze Skript muss ich dann per Cronjob ausführen - soweit weiß ich es aber ich bekomme die Kombi zwischen PHPMail Versand und SQL Abfrage nicht hin. Ich bin bei Google auf Seite 10!! und hoffe hier auf Hilfe! :)

meine Datenbank hat in der Tabelle wiedervorlage u.a. die Spalten "finanzprojektnummer, wiedervorlage und beschreibung. Diese will ich alle per eMail ausgeben und senden, wenn das Datum in "Wiedervorlage" dem heutigen entspricht.

Antwort
von triopasi, 61

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 ^^

Kommentar von Mickan1994 ,

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.

Kommentar von triopasi ,

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

Kommentar von 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

Kommentar von 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

Antwort
von DougundPizza, 81

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 ?

Kommentar von Mickan1994 ,

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

Kommentar von 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

Kommentar von kingbongo ,

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

Kommentar von Mickan1994 ,

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

Kommentar von showgirl1 ,

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.

Kommentar von Mickan1994 ,

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

Kommentar von DougundPizza ,

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.

Antwort
von kingbongo, 81

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
}



Kommentar von Mickan1994 ,

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?

Kommentar von 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

Keine passende Antwort gefunden?

Fragen Sie die Community