Mailversand sowie Übergabe aus PHP-Variable
Guten Morgen sehr geehrtes Forum,
ich verfolge dieses Forum schon lange und habe nun selbst eine Frage.
Mein Spezialgebiet ist nicht gerade die Webentwicklung, aber ich verwalte und entwickle unser Intranet.
Wir nutzen derzeit als IT-Helpdesk die Freeware Spiceworks, diese stößt jedoch schnell an Ihre Grenzen was das Customizing betrifft.
Ich setze derzeit ein separates Frontend auf, in dem ich beispielsweise auch T-SQL Abfragen einbinden kann und dies auch schon umgesetzt habe.
Das gewünschte Ergebnis des Frontends, in dem vorab nur die Eingabe einer Rechnungsnummer erfolgt, sollte die ersichtliche Ausgabe aus der Datenbank sein,
sowie im Idealfall der Versand dieser Daten an eine spezifische Adresse von Spiceworks, sodass daraus ein Ticket resultiert.
Ich habe jedoch zwei Problemstellungen, bei denen ich mir erhoffe, dass mir hier im Forum geholfen werden kann:
- Das Ergebnis des T-SQL-Selects gebe ich derzeit via Echo für den Enduser aus und das ist auch so gewünscht, ich möchte den Inhalt nur gerne in einer Variable deklarieren, die anschließend via Post an die Function übergeben werden soll, die die Mail versendet.
- Im unten aufgeführten Code wird die E-Mail immer von einem spezifischen Account verschickt, die Mail (und das daraus resultierende Ticket) sollte aber im Idealfall im Namen - oder besser mit der E-Mail- des jeweiligen Benutzers versendet werden (eine LDAP-Anbindung ist existent und funktionsfähig -die User werden alle via SSO eingeloggt), mir fehlt aber die Variable für die E-Mail-Adresse und wie ich diese korrekt einbinde - das müsste ja etwas in der Form "$_SERVER ['REMOTE_USER']" sein.
Die ersten -leider gescheiterten Versuche- eine Variable zu initialisieren findet sich in Zeile 92-108 des Quellcodes.
Ich würde mich riesig über eine Rückmeldung Eurerseits freuen und verbleibe mit den besten Grüßen!
ich verfolge dieses Forum schon lange und habe nun selbst eine Frage.
Mein Spezialgebiet ist nicht gerade die Webentwicklung, aber ich verwalte und entwickle unser Intranet.
Wir nutzen derzeit als IT-Helpdesk die Freeware Spiceworks, diese stößt jedoch schnell an Ihre Grenzen was das Customizing betrifft.
Ich setze derzeit ein separates Frontend auf, in dem ich beispielsweise auch T-SQL Abfragen einbinden kann und dies auch schon umgesetzt habe.
Das gewünschte Ergebnis des Frontends, in dem vorab nur die Eingabe einer Rechnungsnummer erfolgt, sollte die ersichtliche Ausgabe aus der Datenbank sein,
sowie im Idealfall der Versand dieser Daten an eine spezifische Adresse von Spiceworks, sodass daraus ein Ticket resultiert.
Ich habe jedoch zwei Problemstellungen, bei denen ich mir erhoffe, dass mir hier im Forum geholfen werden kann:
- Das Ergebnis des T-SQL-Selects gebe ich derzeit via Echo für den Enduser aus und das ist auch so gewünscht, ich möchte den Inhalt nur gerne in einer Variable deklarieren, die anschließend via Post an die Function übergeben werden soll, die die Mail versendet.
- Im unten aufgeführten Code wird die E-Mail immer von einem spezifischen Account verschickt, die Mail (und das daraus resultierende Ticket) sollte aber im Idealfall im Namen - oder besser mit der E-Mail- des jeweiligen Benutzers versendet werden (eine LDAP-Anbindung ist existent und funktionsfähig -die User werden alle via SSO eingeloggt), mir fehlt aber die Variable für die E-Mail-Adresse und wie ich diese korrekt einbinde - das müsste ja etwas in der Form "$_SERVER ['REMOTE_USER']" sein.
Die ersten -leider gescheiterten Versuche- eine Variable zu initialisieren findet sich in Zeile 92-108 des Quellcodes.
Ich würde mich riesig über eine Rückmeldung Eurerseits freuen und verbleibe mit den besten Grüßen!
<html>
<!-- Meta-Daten sind wichtig für die richtige Interpretation der Daten. -->
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<head></head>
<body>
<?php
// Verbindungsdaten zum SQL-Server, zzgl. Zugangsdaten - in diesem Fall aus .txt-File.
$serverName = "192.168.55.712";
// Deklarierung der Konstanten und Variablen
if (empty($_POST['RGNR'])) {
$_POST['RGNR'] = "09040-27230";
}
$Rechnungsnummer = $_POST['RGNR'] ;
$uid = file_get_contents("C:\AppData\uid.txt");
$pwd = file_get_contents("C:\AppData\pwd.txt");
$connectionInfo = array( "UID"=>$uid,
"PWD"=>$pwd,
"Database"=>"Contoso-DB",
"CharacterSet"=>"UTF-8" );
// Verbindung herstellen mit SQL-Zugangsdaten aus den Textdateien
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Es besteht keine Verbindung zum Datenbankserver.</br>";
die( print_r( sqlsrv_errors(), true));
}
// Auszuführendes TSQL anhand der Berechtigung des oben hinterlegten Nutzers
$tsql =
"
SELECT
EmpfAenger,
ReDatum,
tbl_Login.Name [Rechnungsersteller],
FORMAT(Netto, 'c') [Rechnungsbetrag],
FORMAT(tbl_Buchungen.Netto, 'c') [Zahlungseingang],
tbl_Filialen.Bezeichnung [Betreuende_NL],
tbl_login.Name [Betreuer_NL],
tbl_Kunden.Strasse [Strasse_Entsendung],
tbl_Kunden.Plz [Postleitzahl_Entsendung],
tbl_Kunden.Ort [Ort_Entsendung],
tbl_Kunden.RStrasse [Strasse_Rechnungsadresse],
tbl_Kunden.RPlz [Postleitzahl_Rechnungsadresse],
tbl_Kunden.ROrt [Ort_Rechnungsadresse]
FROM tbl_Rechnungsausgang
INNER JOIN tbl_Login
ON (tbl_Rechnungsausgang.erstellt_von = tbl_Login.Benutzerkennung)
INNER JOIN tbl_Buchungen
ON tbl_Rechnungsausgang.ReNummer = tbl_Buchungen.Rechnungsnummer
INNER JOIN tbl_Kunden
ON tbl_Rechnungsausgang.id_Kunden = tbl_Kunden.id_Kunden
INNER JOIN tbl_Filialen
ON tbl_Kunden.id_Filialen = tbl_Filialen.id_Filialen
WHERE ReNummer='$Rechnungsnummer'
ORDER by tbl_Buchungen.erstellt_am DESC";
// Ausgabe insofern der SQL-Code falsch ist
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
echo "Es ist ein Fehler aufgetreten.</br>";
die( print_r( sqlsrv_errors(), true));
}
// Empfang und Ausgabe des SQL-Selects
echo '<table border="1">';
$row = sqlsrv_fetch_array($stmt);
echo"</br></br></br>";
echo"Kunde: ".$row[EmpfAenger]."</br>";
echo"Rechnungsdatum: ".$row[ReDatum]-> format('d.m.Y')."</br>";
echo"Rechnungsnummer: ".$Rechnungsnummer."</br>";
echo"Rechnungsersteller: ".$row[Rechnungsersteller]."</br></br>";
echo"Rechnungsbetrag: ".$row[Rechnungsbetrag]."</br>";
echo"Zahlungseingang: ".$row[Zahlungseingang]."</br></br></br>";
echo"Straße Entsendung: ".$row[Strasse_Entsendung]."</br>";
echo"Postleitzahl Entsendung: ".$row[Postleitzahl_Entsendung]."</br>";
echo"Ort Entsendung: ".$row[Ort_Entsendung]."</br></br></br>";
echo"Rechnungsadresse: ".$row[Strasse_Rechnungsadresse]."</br>";
echo"Postleitzahl Rechnung: ".$row[Postleitzahl_Rechnungsadresse]."</br>";
echo"Ort Rechnung: ".$row[Ort_Rechnungsadresse]."</br>";
echo"Verantwortlicher in der Niederlassung: ".$row[Betreuer_NL]."</br>";
echo"Verantwortliche Niederlassung: ".$row[Betreuende_NL]."</br></br></br>";
/* Versuch die Ergebnisse in einer String-Variable zu initialisieren zu deklarieren u. initialisieren:
$str=
$row = sqlsrv_fetch_array($stmt);
echo"</br></br></br>";
echo"Kunde: ".$row[EmpfAenger]."</br>";
echo"Rechnungsdatum: ".$row[ReDatum]-> format('d.m.Y')."</br>";
echo"Rechnungsnummer: ".$Rechnungsnummer."</br>";
echo"Rechnungsersteller: ".$row[Rechnungsersteller]."</br></br>";
echo"Rechnungsbetrag: ".$row[Rechnungsbetrag]."</br>";
echo"Zahlungseingang: ".$row[Zahlungseingang]."</br></br></br>";
echo"Straße Entsendung: ".$row[Strasse_Entsendung]."</br>";
echo"Postleitzahl Entsendung: ".$row[Postleitzahl_Entsendung]."</br>";
echo"Ort Entsendung: ".$row[Ort_Entsendung]."</br></br></br>";
echo"Rechnungsadresse: ".$row[Strasse_Rechnungsadresse]."</br>";
echo"Postleitzahl Rechnung: ".$row[Postleitzahl_Rechnungsadresse]."</br>";
echo"Ort Rechnung: ".$row[Ort_Rechnungsadresse]."</br>";
echo"Verantwortlicher in der Niederlassung: ".$row[Betreuer_NL]."</br>";
echo"Verantwortliche Niederlassung: ".$row[Betreuende_NL]."</br></br></br>";
*/
// Auflösen der Anfrage und Schließen der Verbindung.
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
<form action="Rechnungskorrektur.php" method="post">
<input type="text" name="Bemerkungen" value="Bitte tragen Sie hier Kommentare ein."style="width:800px;"style="hidth:400px;" /></br></br>
</form>
<form method="post">
<input type="submit" name="test" id="test" value="Übermitteln" /><br/>
</form>
<?php
// Funktion zum Versand der Mail - hier müssen die Variablen hin übergeben werden aus dem vorherigen <?php
function testfun()
{
$to = "ticketsystem@contoso.de";
$subject = "Rechnungskorrektur:;
$txt = "Testmails";
$headers = "From: c.ehrik@contnso.de" . "\r\n" .
"CC: c.ehrik@contoso.de";
mail($to,$subject,$txt,$headers);
}
if(array_key_exists('test',$_POST)){
testfun();
}
?>
</body>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3541197367
Url: https://administrator.de/contentid/3541197367
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
9 Kommentare
Neuester Kommentar
Nicht nur das, die übergebenen Daten für die Mail-Funktion werden in keinster Weise in quoted printables umgewandelt bzw. kodiert übergeben. Eine Mail mit einem Umlaut oder Sonderzeichen wird dir so bei den empfangenden Mailservern wohl zu 99% im Spam landen oder sogar von den Empfangenden Mail-Servern gleich abgelehnt! Es lauern hier noch mehr Fallen!
Deswegen, wenn du keine Ahnung von der Materie hast, nutze für das Versenden eine Bibliothek wie z.B. phpmailer. Oder übergebe das Projekt am besten gleich an jemanden der weis was er da tut, wenn es schon an einer Variablen und Funktionsdefinitionen hapert sehe ich sehr schwarz ...
Deswegen, wenn du keine Ahnung von der Materie hast, nutze für das Versenden eine Bibliothek wie z.B. phpmailer. Oder übergebe das Projekt am besten gleich an jemanden der weis was er da tut, wenn es schon an einer Variablen und Funktionsdefinitionen hapert sehe ich sehr schwarz ...
function testfun($param){
// use $param
echo $param;
}
$text = "whatever";
testfun($text);
Servus,
wenn das ganze Customizing mehr als ein Mailversand werden soll: Nutze bitte ein Framework wie z.B. Laravel.
Das kann alles (in deinem Fall DB-Abfragen, Mailversand, sicherheitsrelevante Überürpfungen von Inputs, ...).
Ja, es mag sich am Anfang komisch anfühlen, wenn man ein Framework mit 30-50MB verwendet, um nur schnell ein paar Daten zu verarbeiten. Aber es kommen dann schnell weitere Anforderungen dazu und da spielt das Framework seine Stärken aus.
Grüße, Stefan
wenn das ganze Customizing mehr als ein Mailversand werden soll: Nutze bitte ein Framework wie z.B. Laravel.
Das kann alles (in deinem Fall DB-Abfragen, Mailversand, sicherheitsrelevante Überürpfungen von Inputs, ...).
Ja, es mag sich am Anfang komisch anfühlen, wenn man ein Framework mit 30-50MB verwendet, um nur schnell ein paar Daten zu verarbeiten. Aber es kommen dann schnell weitere Anforderungen dazu und da spielt das Framework seine Stärken aus.
Grüße, Stefan
Zitat von @Tastenkloppe:
Mein Problem ist, dass die Variable da noch nicht zur Verfügung steht und dort ja auch nicht initialisiert wird. Ich müsste die aus dem oberen php-code in der function verfügbar machen, da weiß ich leider nicht wie.
Na einfach die Postvariable abfragen und nur wenn sie gesetzt ist weitermachen ....Mein Problem ist, dass die Variable da noch nicht zur Verfügung steht und dort ja auch nicht initialisiert wird. Ich müsste die aus dem oberen php-code in der function verfügbar machen, da weiß ich leider nicht wie.
function testfun($param){
// use $param
echo $param;
}
$var = isset($_POST['test']) ? $_POST['test'] : "";
if ($var != ''){
testfun($var);
}
Hier fehlen vollkommen die absoluten Basics .
Ich bin daher nun raus.
Viel Spaß noch bei deinem "Let's Bastel-Projekt" . Kann man nur hoffen das da nichts wichtiges dran hängt ... Aber wenn ich schon das Wörtchen "Rechnungskorrektur" lesen, bleibt dann wohl nur noch Kopfschütteln.
Adios muchachos