From 082047700faabffa75febd71df893d0ba5821f4d Mon Sep 17 00:00:00 2001 From: aschwarz Date: Fri, 28 Apr 2023 20:51:27 +0200 Subject: [PATCH] Mailversand bei Finanzerfassung --- controller/admin_finanzen.php | 12 +- controller/admin_phpmailer.php | 45 +------ controller/cronjob_finanzen.php | 206 ++++++++++++++++++++++++++++++++ controller/func_save_mail.php | 41 +++++++ dashboard/test2.php | 26 ++++ 5 files changed, 284 insertions(+), 46 deletions(-) create mode 100644 controller/cronjob_finanzen.php create mode 100644 controller/func_save_mail.php create mode 100644 dashboard/test2.php diff --git a/controller/admin_finanzen.php b/controller/admin_finanzen.php index 8f51195..dc70334 100644 --- a/controller/admin_finanzen.php +++ b/controller/admin_finanzen.php @@ -67,7 +67,8 @@ if ($function == 'save_with_files') $row = $result->fetch_array(); if ($row['fid'] == '' AND $fid_edit == '-1') { - $sql1 = $db->query("INSERT INTO jumi_finanzen ( datum + $sql1 = $db->query("INSERT INTO jumi_finanzen ( uid + , datum , beschreibung , firma , art @@ -75,7 +76,8 @@ if ($function == 'save_with_files') , bemerkung ) VALUES - ( '$datum_form' + ( '$uid' + , '$datum_form' , '$beschreibung' , '$firma' , '$art' @@ -160,7 +162,8 @@ if ($function == 'save_without_files') $datum = date("Y-m-d H:i:s"); if($fid_edit == '-1'){ - $sql1 = $db->query("INSERT INTO jumi_finanzen ( datum + $sql1 = $db->query("INSERT INTO jumi_finanzen ( uid + , datum , beschreibung , firma , art @@ -168,7 +171,8 @@ if ($function == 'save_without_files') , bemerkung ) VALUES - ( '$datum_form' + ( '$uid' + , '$datum_form' , '$beschreibung' , '$firma' , '$art' diff --git a/controller/admin_phpmailer.php b/controller/admin_phpmailer.php index dc8f683..a8f897f 100644 --- a/controller/admin_phpmailer.php +++ b/controller/admin_phpmailer.php @@ -1,5 +1,4 @@ $val) { - // echo "($key) "; - // echo imap_utf7_decode($val->name) . ","; - // echo "'" . $val->delimiter . "',"; - // echo $val->attributes . "
\n"; - // } - // } else { - // echo "imap_getmailboxes failed: " . imap_last_error() . "\n"; - // } - // - // imap_close($mbox); - - $path = "{imap.ionos.de:993/imap/ssl}Gesendete Objekte"; - $imapStream = imap_open($path, $mail->Username, $mail->Password); - # Letzter Flag Seen, damit die Mail bereits als gelesen in gesendete Objekte eingestellt wird - $result = imap_append($imapStream, $path, $mail->getSentMIMEMessage(),"\Seen"); - imap_close($imapStream); - return true; -} - $mail = new PHPMailer(); try { @@ -148,9 +109,9 @@ try { //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); - if (save_mail($mail)) { - #echo "Message saved!"; - } + require_once("../controller/func_save_mail.php"); + save_mail($mail); + echo '
Mail wurde versendet!
|***|success'; } catch (Exception $e) { diff --git a/controller/cronjob_finanzen.php b/controller/cronjob_finanzen.php new file mode 100644 index 0000000..cd4dae4 --- /dev/null +++ b/controller/cronjob_finanzen.php @@ -0,0 +1,206 @@ +query( $query) + or die ("Cannot execute query"); + +while ($row = $result->fetch_array()){ + +$result_user = $db->query("SELECT vorname, nachname + FROM jumi_admin + WHERE uid = $row[uid]"); +$row_user = $result_user->fetch_array(); +if($row['art'] == 'A'){ + $art = 'Ausgabe'; + $betrag = $row['betrag']*(-1); +} +if($row['art'] == 'E'){ + $art = 'Einnahme'; + $betrag = $betrag; +} + +$betrag = $fmt->formatCurrency($betrag, "EUR"); + +$mail = new PHPMailer(); +$attachment = array(); + +try { + //Server settings + $mail->isSMTP(); //Send using SMTP + $mail->CharSet = 'UTF-8'; + $mail->Encoding = 'base64'; + $mail->SMTPDebug = 0; + $mail->Host = 'smtp.ionos.de'; //Set the SMTP server to send through + $mail->SMTPAuth = true; //Enable SMTP authentication + $mail->Username = "$mailjumi"; //SMTP username + $mail->Password = "$mailpwd"; //SMTP password + $mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` + $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; + $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; + # Priority: Options: null (default), 1 = High, 3 = Normal, 5 = low +# $mail->Priority = 1; + + //Recipients + //$mail->SetFrom($_POST["userEmail"], $_POST["userName"]); + //$mail->AddReplyTo($_POST["userEmail"], $_POST["userName"]); + $mail->SetFrom("$mailjumi", "$absender"); + $mail->AddAddress("$mailjumi", "$absender"); + $mail->AddReplyTo("$mailjumi", "$absender"); + //$mail->addCC('cc@example.com'); + + $query1 = "SELECT filename, originalname FROM jumi_finanzen_uploads WHERE fid=$row[fid]"; + $result1 = $db->query($query1) + or die ("Cannot execute query1"); + + while ($row1 = $result1->fetch_array()){ + $a = ['filename'=>"$row1[filename]"]; + $b = ['name'=>"$row1[originalname]"]; + $attachment[] = array_merge($a, $b); + + } + + //Attachments + + + + if (sizeof($attachment) > 0) { + foreach($attachment as $files) { + $mail->AddAttachment($files['filename'], $files['name']); + } + } + + //Content + $mail->isHTML(true); //Set email format to HTML + $mail->Subject = "Neue $art erfasst"; + $text = " + + + Neue $art erfasst + + + + Hallo,

+ im Admintool wurde eine $art erfasst: +
+
+ + + + + + + + + + + + + "; + if($row['bemerkung'] != ''){ + $text .= " + + + + "; + } + $text .= " + + + + +
+ + Benutzer: + + + + $row_user[vorname] $row_user[nachname] + +
+ + Art: + + + + $art + +
+ + Beschreibung/Firma: + + + + $row[beschreibung] / $row[firma] + +
+ + Bemerkung: + + + + $row[bemerkung] + +
+ + Betrag: + + + + $betrag + +
+
+ Diese Mail wurde automatisch erstellt! +

+ Vielen Dank,
+ JU & MI + + "; + + $mail->Body = $text; + //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; + + $mail->send(); + if($mail){ + + save_mail($mail); + $datum = date("Y-m-d H:i:s"); + $sql1 = $db->query( "UPDATE jumi_finanzen + SET mailversand = '$datum' + WHERE fid = $row[fid] + " ); + + } +# echo "


";
+#    print_r($mail);
+#    echo "

"; +# echo '
Mail wurde versendet!

'; +} +catch (Exception $e) { +# echo "
Es konnte keine Mail verschickt werden! Mailer Error: {$mail->ErrorInfo}

"; +} + + +} + +?> diff --git a/controller/func_save_mail.php b/controller/func_save_mail.php new file mode 100644 index 0000000..b5db42c --- /dev/null +++ b/controller/func_save_mail.php @@ -0,0 +1,41 @@ + $val) { + // echo "($key) "; + // echo imap_utf7_decode($val->name) . ","; + // echo "'" . $val->delimiter . "',"; + // echo $val->attributes . "
\n"; + // } + // } else { + // echo "imap_getmailboxes failed: " . imap_last_error() . "\n"; + // } + // + // imap_close($mbox); + + $path = "{imap.ionos.de:993/imap/ssl}Gesendete Objekte"; + $imapStream = imap_open($path, $mail->Username, $mail->Password); + # Letzter Flag Seen, damit die Mail bereits als gelesen in gesendete Objekte eingestellt wird + $result = imap_append($imapStream, $path, $mail->getSentMIMEMessage(),"\Seen"); + imap_close($imapStream); + return true; +} + +?> \ No newline at end of file diff --git a/dashboard/test2.php b/dashboard/test2.php new file mode 100644 index 0000000..d1934e3 --- /dev/null +++ b/dashboard/test2.php @@ -0,0 +1,26 @@ +'../media/file_upload/finanzen/20230420_111236_RG_100121618035.pdf']; +$b = ['name'=>'RG_100121618035.pdf']; +$attachment[] = array_merge($a, $b); + +$a = ['filename'=>'../media/file_upload/finanzen/20230420_111413_RG_100119951099.pdf']; +$b = ['name'=>'RG_100119951099.pdf']; +$attachment[] = array_merge($a, $b); + +$a = ['filename'=>'../media/file_upload/finanzen/20230420_111614_RG_100117336090.pdf']; +$b = ['name'=>'RG_100117336090.pdf']; +$attachment[] = array_merge($a, $b); + +echo"
";
+print_r($attachment);
+echo"

"; + +foreach($attachment as $files) { + echo "$files[filename] --> $files[name]
"; + echo "
"; +} + +echo sizeof($attachment); +?> \ No newline at end of file