Datenschutz Impressum

NOF-Schule | Forum

zur Schule NOF-NetObjects-Tutorials von Tommy Herrmann

Die Foren sind geschlossen. Für Fragen zu MR, NOF & mehr steht Tommys Forum zur Verfügung. Ich danke für die langjährige Treue und Mitarbeit! Eure Administratorin.

Empfängerauswahl - ausgewähltes Feld in Mail
#1
Hey liebes Forum! 
Ich nutze den Formular-Generator und komme gerade nicht weiter. Ich glaube, dass die Lösung nicht wirklich schwer ist, aber ich bin leider komplett neu in diesem Gebiet. 
Ich habe eine Empfänger-Auswahl hinzugefügt. Dort wählt man seinen gewünschten Bereich aus und je nachdem enthält das entsprechende Team die Benachrichtigung. In der E-Mail müsste jedoch noch einmal der ausgewählte Bereich stehen, da ein Team jeweils für mehrere Bereiche zuständig ist.
Welchen Befehl muss ich dafür zu $Text schreiben? Alle naheliegenden Optionen wie $Mails, $Mailto, $MailtoAW habe ich ausprobiert, klappen aber leider nicht. Ich weiß leider nicht, welche Variable mir nur den ausgewählten Bereich nochmal anzeigt.

Könnt ihr mir vielleicht weiterhelfen? Das wäre super :D 

Code:
$Mails = [
"" => "",
"1" => "team1@xy.de",
"2" => "team1@xy.de",
"3" => "team2@xy.de",
"4" => "team2@xy.de",
...
];


................


$Mailto = isset($_POST["mail_to"]) ? $Mails[$_POST["mail_to"]] : $Mails[key($Mails)];
$MailtoAW = "\n   <select name='mail_to'>";
foreach ($Mails  as $key => $value) {
$MailtoAW .= "\n    <option value='" . $key . "'" .
((isset($_POST["mail_to"]) ? $_POST["mail_to"] : "") == $key
" selected='selected'" : "") . ">" . $key . "</option>";
}
$MailtoAW .= "\n   </select>\n  ";
Alle Beiträge dieses Benutzers finden
#2
Moin,

... und willkommen bei uns im Forum :hallo:

das wäre die Variable

$Mailto

Beipiel für den Inhalt der Mail:

Zitat:  // Inhalt der E-Mail setzen
  $Text = "  Gesendet am: $Datum Uhr
  Name: $name
  E-Mail: $email
  Betreff: $betreff
  Nachricht: $nachricht
  Dateianhang: $Files
  Empfänger: $Mailto
  ";


... was meinst Du mit "ausgewählter Bereich"? Du wählst doch aus der Auswahlliste eben nur eine, spezielle Empfänger-Mailadresse aus, an die dann das Formular gesendet wird.

... ich verstehe daher den Sinn nicht wirklich, denn diese ausgewählte Empfänger-Mailadresse steht doch bereits im Mail-Header unter "An:" und an diese wird ja dann eben auch die Mail gesendet.

Ohne eine solche Auswahlliste müsste man bei dem Skript eine feste, einzelne Empfänger-Mailadresse eintragen und die bliebe immer gleich.

Der Unterschied ist doch nur, dass man mit dieser Auswahlliste zwischen verschiedenen E-Mail-Adressen, an die die Mail gesendet werden soll, wählen kann und nicht etwa an alle Adressaten, die in dieser Auswahlliste stehen.

Falls Du möchtest, dass an alle eingetragenen Adressen gleichzeitig eine Mail gesendet wird, dann solltest Du sicherheitshalber unseren Werner (Werner Zenk) mal fragen, denn so ist das Skript jetzt nicht programmiert.

Das müsste man dann mit einer Schleife programmieren und alle Mail-Adressen abarbeiten. Hier ein Beispiel:

https://www.selfphp.de/praxisbuch/praxis...6&group=50

PHP-Code:
<?php
// Empfaengerliste
$empfaenger = array(
  
"x@mail.de",
  
"y@mail.de",
  
"z@mail.de"
);

// BCC-Erzeugen
foreach ($empfaenger as $key => $email) {
  
$bcc .= "Bcc: $email\r\n";
}

// Mail samt BCC-Empfänger versenden
mail(
  
"erster@mail.de",
  
"Newsletter",
  
"Hier das Neueste...",
  
$bcc
);

?>
Alle Beiträge dieses Benutzers finden
#3
Hey Tommy,

vielen Dank für die Antwort und die schnelle Hilfe!
Ich glaube, dass ich mich einfach nicht gut ausdrücken konnte (wenn ich es mir jetzt noch einmal durchlese, verstehe ich das auch) - sorry dafür :D 
Versuche es nochmal etwas spezifischer ...

Die ausfüllende Person wählt nicht direkt die Empfänger-Adresse aus, sondern einen Problembereich (Problem 1, Problem 2, Problem 3, ...). Je nach Auswahl wird es dann an das entsprechende Team gesendet. Ein Team ist aber häufiger für mehrere Problembereiche zuständig. Deshalb sollte in der Mail an das Team noch einmal direkt aufgelistet sein, welches Problem ausgewählt wurde (um es dann ggf. intern weiterzuleiten). 
$Mailto fügt mir die tatsächliche Empfänger-Adresse in die Mail ein. Ich würde aber gerne das Problem dort stehen haben (Problem 1 oder Problem 2 oder ...). Ist das möglich? Oder muss ich noch eine zusätzliche Variable, die mir die Probleme definiert, einbauen? 

Code:
$Mails = [
"" => "",
"Problem 1" => "team1@xy.de",
"Problem 2" => "team1@xy.de",
"Problem 3" => "team2@xy.de",
"Problem 4" => "team2@xy.de",
...
];

Danke und liebe Grüße!
Alle Beiträge dieses Benutzers finden
#4
Ach so - ja - jetzt verstehe ich. Das ist mir jetzt aber etwas zu kompliziert. Ich sehe, dass das Array

key($Mails);

diesen Eintrag trägt. Ich weiß aber gerade nicht, wo ich das in der Schleife des Options-Auswahlfeldes einsetzen muss, denn eine neue Variable wie:

$Empfang = key($Mails);

gibt mir dann immer nur den obersten Eintrag und nicht den gewählten aus.

PHP-Code:
// Empfänger - Auswahlliste
$Mailto = isset($_POST["mail_to"]) ? $Mails[$_POST["mail_to"]] : $Mails[key($Mails)];
$MailtoAW "\n  <select name='mail_to' class='form-control'>";
foreach (
$Mails  as $key => $value) {
 
$MailtoAW .= "\n    <option value='" $key "'" .
 ((isset(
$_POST["mail_to"]) ? $_POST["mail_to"] : "") == $key ?
 
" selected='selected'" "") . ">" $key "</option>";
}
$MailtoAW .= "\n  </select>\n  "

Hier mein Test:


.jpg  Abteilung.JPG (Größe: 17,07 KB / Downloads: 40)


Ich schreibe mal an Werner, vielleicht hat er Zeit hier mal zu gucken.
Alle Beiträge dieses Benutzers finden
#5
Vielen Dank dir für die Hilfe, das ist super! Ich hoffe mal, dass Werner helfen kann.
Und ich dachte schon, meine Frage sei zu offensichtlich und eigentlich total unnötig - aber dem scheint dann wohl nicht so zu sein ...

Ansonsten wäre wohl meine Alternativlösung nur eine Empfänger-Adresse anzugeben und dann dort im Postfach automatische Weiterleitungen je nach Inhalt der Mail zu aktivieren. Wäre natürlich auch ok Smiling
Alle Beiträge dieses Benutzers finden
#6
na ja - wenn wir alle so ein Genie wie Werner wären und programmieren könnten, dann gäbe es das Forum ja nicht :D

Ich blicke da gerade durch diese "foreach" Schleife nicht so ganz durch :eek:

Für Werner ist das eine Kleinigkeit - ich habe ihm geschrieben. Ich weiß aber nicht, ob er gerade da ist und ob er kurzfristig gucken wird.
Alle Beiträge dieses Benutzers finden
#7
Moin,

ich habe gestern vollkommen quer gedacht und mir das gerade nochmals angeguckt.

Du setzt einfach noch unter diese Schleife der Auswahlliste die Post-Variable von "mail_to":

Zitat:// Empfänger - Auswahlliste
$Mailto = isset($_POST["mail_to"]) ? $Mails[$_POST["mail_to"]] : $Mails[key($Mails)];
$MailtoAW = "\n  <select name='mail_to' class='form-control'>";
foreach ($Mails  as $key => $value) {
$MailtoAW .= "\n    <option value='" . $key . "'" .
((isset($_POST["mail_to"]) ? $_POST["mail_to"] : "") == $key ?
" selected='selected'" : "") . ">" . $key . "</option>";
}
$MailtoAW .= "\n  </select>\n  ";

$Empfang = "Empfänger: " . $_POST['mail_to'];

und dann schreibst Du diese neue Variable "$Empfang" in den Text:

Zitat:  // Inhalt der E-Mail setzen
  $Text = "  Gesendet am: $Datum Uhr
  Name: $name
  E-Mail: $email
  Betreff: $betreff
  Nachricht: $nachricht
  $Empfang
  ";

und dann wird in der Mail z.B. stehen:

Empfänger: Problem 2
Alle Beiträge dieses Benutzers finden
#8
Kam erst jetzt dazu, die Anpassungen vorzunehmen, aber es hat perfekt funktioniert! 
Vielen lieben Dank, Tommy :D 
Auf die Idee, die gesamt $Post-Variable zu nutzen, bin ich wohl nicht gekommen ...
Alle Beiträge dieses Benutzers finden
#9
ja - das ist immer das Problem - wenn es zuuuu einfach ist :D
Alle Beiträge dieses Benutzers finden
#10
Hi Tommy,

vielleicht kannst du mir noch einmal helfen.
Das Kontaktformular ist inzwischen eingebunden und funktioniert auch perfekt.

Ich würde jedoch gerne bei der Auswahl der Empfänger einen Filter einbauen, falls möglich :confused:
Je nach Antwort aus einem vorherigen Drop-Down-Menü sollen nicht mehr alle Empfänger/Problembereiche angezeigt werden. Zum Beispiel kann im Feld zuvor ausgewählt werden, um welche Produktgruppe es sich handelt (Produkt A, Produkt B, Produkt C). Danach wird der Problembereich ausgewählt (und je nach Antwort wird die Mail an ein unterschiedliches Team gesendet). Jedoch sind nicht alle Problembereiche bei allen Produktgruppen relevant bzw. logisch.
Bisher gab es einige wenige Mails, die eigentlich nicht so recht passten - ist zwar nicht super schlimm, aber wäre natürlich elegant, wenn sich das auch lösen ließe. 

Mit den einfachen "if-Befehlen" kam ich nicht weiter, wenn ich das direkt in die Auswahl der Empfänger integriert habe. Da aber solche Codes auch sehr neu für mich sind, mache ich vielleicht auch etwas falsch (z.B. habe ich schon viel mit den Klammern und Anführungszeichen herumprobiert, weil das ja scheinbar einen großen Unterschied macht). Oder innerhalb der Definition einer $Variable ist ein solcher Befehl gar nicht möglich?

$Mails = [
"" => "",
if ($Var1 == "XXX") {"Problem 1"} => "team1@xy.de",
...
"Problem 2" => "team1@xy.de",
"Problem 3" => "team2@xy.de",
"Problem 4" => "team2@xy.de",
...
];
Alle Beiträge dieses Benutzers finden
#11
bitte wende Dich dafür mal an unseren "Werner123" (Werner Zenk)
Alle Beiträge dieses Benutzers finden
#12
Dann schreibe ich ihm mal, danke Smiling
Alle Beiträge dieses Benutzers finden


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Kontaktformular webbausteine-Zweiten E-Mail Empfänger eingeben Thomas Saake 11 8.307 10.08.2016, 15:13
Letzter Beitrag: Thomas Saake



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
nach oben An den Anfang der Seite scrollen
NetObjects Fusion Infos, Downloads und Updates Diese Website wird durch Bot-Trap vor Spam geschützt!