Formmailer erweitern durch Auswahl

Hallo Ihr alle…

folgendes ich habe ein Formmailer der ganz gut funktioniert - also so wie er auch soll. Nun ist es so dass der Formmailer nur für ein empfänger gedacht ist und nicht für mehrere. Der Jenige der eine Mail schreiben will über diesen Formmailer, soll die Möglichkeit erhalten über ein Drap&Drop Feld oder ähnliches den Empfänger auswählen zu können. Wie realisiere ich dies?

Unten ist der PHP-Code vom aktuellen Stand des Formmailers. Ich sage auch hiermit schon mal DANKE.

<?php // ***Einstellungen***
$mail\_to ='[[email protected]](mailto:[email protected])'; // Mailadresse (Empfängeradresse) // ############################################################################# $from\_name=GetParam('fromname'); $from\_mail=strtolower(GetParam('frommail')); $mail\_subject=GetParam('mailsubject'); $mail\_text=GetParam('mailtext'); $send=GetParam('s'); $err\_text=''; if(trim($from\_name)=='') $err\_text.='Bitte geben Sie Ihren Namen an. '; if(trim($from\_mail)=='') $err\_text.='Bitte geben Sie Ihre E-Mail-Adresse an. '; else if(!preg\_match('/^[\_a-z0-9-]+(\.[\_a-z0-9-]+)\*@[a-z0-9-]+(\.[a-z0-9-]+)\*(\.[a-z]{2,6})$/i',$from\_mail)) $err\_text.='Bitte geben Sie eine gültige E-Mail-Adresse an. '; if(trim($mail\_subject)=='') $err\_text.='Bitte geben Sie einen Betreff ein. '; if(trim($mail\_text)=='') $err\_text.='Bitte geben Sie einen Nachrichtentext ein. '; // \*\*\* Zu langen Text abschneiden \*\*\* if(strlen($mail\_text)\>4500) { $mail\_text=substr($mail\_text,0,4500).'... (Text wurde gekürzt!)'; } $from\_name=str\_replace(chr(34),"''",$from\_name); $mail\_subject=str\_replace(chr(34),"''",$mail\_subject); $from\_name=stripslashes($from\_name); $from\_mail=stripslashes($from\_mail); $mail\_subject=stripslashes($mail\_subject); $mail\_text=stripslashes($mail\_text); if (($send == '1') && ($err\_text != '')) { echo ' **Fehler:** '; echo $err\_text.' '; } if (($send != '1') || ($err\_text != '')) { ?\> Ihr Name:  Ihre E-Mail-Adresse: Betreff: Text: _(max. 4.500 Zeichen)_ =$mail\_text?\> <?php } else {
$header="From: $from\_name \n"; $header.="Reply-To: $from\_mail\n"; $header.="X-Mailer: PHP-ContactForm-Script\n"; $header.="Content-type: text/plain; charset=UTF-8\n"; $mail\_date=gmdate('D, d M Y H:i:s').' +0000'; $send=0; if(@mail($mail\_to,$mail\_subject,$mail\_text,$header)) { echo " **Die Nachricht wurde erfolgreich abgesendet.**"; echo " [Zurück zum Formular](%255C%2522%2522.GetParam('PHP_SELF','S').%2522?from_name=%2524from_name&from_mail=%2524from_mail%255C%2522) "; }else{ echo " **Beim Versenden der Nachricht ist ein Fehler aufgetreten!**"; echo " [Zurück zum Formular](%255C%2522%2522.GetParam('PHP_SELF','S').%2522?from_name=%2524from_name&from_mail=%2524from_mail&mail_subject=%2524mail_subject&mail_text=%2522;) "; } } function GetParam($ParamName, $Method = 'P', $DefaultValue = '') { if ($Method == 'P') { if (isset($\_POST[$ParamName])) return $\_POST[$ParamName]; else return $DefaultValue; } else if ($Method == 'G') { if (isset($\_GET[$ParamName])) return $\_GET[$ParamName]; else return $DefaultValue; } else if ($Method == 'S') { if (isset($\_SERVER[$ParamName])) return $\_SERVER[$ParamName]; else return $DefaultValue; } } ?\>

Siehe http://php.net/manual/de/function.mail.php ist das Feld

$mail_to =‚[email protected]‘; // Mailadresse

zu erweitern. Das Format ist [email protected],[email protected] usw., d.h. eine kommaseparierte Liste von Empfängern.

Die Eingabe erfolgt über ein oder mehrere Inputfelder. Das kann man zB mit Javascript realisieren.

Anzupassen ist dann noch die Routine, welche die Formate der eingegebene Adressen abprüft.

Dies alles ist mit relativ wenig Aufwand realisierbar…

Hallo

Ich habe es folgendermassen gelöst:

Ich habe für jede email-Adresse, welche zur Auswahl stehen soll eine Datei z.B. email_1.php erstellt

EADR_1
$to=„[email protected]“;
$wer=„Frau Musterfrau“;
?>

in dem Moment, wenn das Formular abgeschickt wird, also wenn alle Eingaben gemacht sind und der Kunde auf Senden drückt, wird

include($anwen.".php");

ausgewählt und eingebettet - also die entsprechende Datei.

in Dein Formular baust Du am besten als erste Eingabemöglichkeit folgendes ein:


Kontakt mit:

<?php if(!$anwen)
{echo"Adresse wählen...>Abteilung 1>Abteilung 2>Abteilung 3";
}
else
{
include($anwen).".php";
echo$wer;
}?> aufnehmen *


- - - - - - - -

Das ich hier die Datei ein 2. Mal include (welches eigentlich vor dem 1. Mal passiert in der Programmabfolge) ist zur Darstellung des Namens, welcher in der Datei gespeichert ist.

Das ich die Adressen in extra Dateien speichere ist ein kleiner Schutz gegen email-Sammler (Spam-Schutz)

Das Beispiel kannst Du Dir auf

http://www.wohn-und-pflegezentrum.de/index.php?p=802

ansehen


Bei Fragen sende mir eine email

[email protected]


mfg
Oliver Strauß

Wenn ein dropdown ok ist, dann
… durch passende werte ersetzen

empfangen1 select>
In das Formular rein.

Und im php des mailversand noch:
$mail_to = $_post[‚werbekommts‘];

Ihre Idee finde ich nicht schlecht und habe diese eingesetzt. Allerdings versendet er nun keine Mails mehr. Zumindest kommen die bei mir nun nicht mehr an. Unten der aktuelle PHP-Code:

<?php // ***Einstellungen***
$mail\_to = $\_post['empfaenger'];// Ihre Mailadresse (Empfängeradresse) // ############################################################################# $empfaenger=GetParam('empfaenger'); $from\_name=GetParam('fromname'); $from\_mail=strtolower(GetParam('frommail')); $mail\_subject=GetParam('mailsubject'); $mail\_text=GetParam('mailtext'); $send=GetParam('s'); $err\_text=''; if(trim($empfaenger)=='') $err\_text.='Bitte wählen Sie den Empfänger aus. '; if(trim($from\_name)=='') $err\_text.='Bitte geben Sie Ihren Namen an. '; if(trim($from\_mail)=='') $err\_text.='Bitte geben Sie Ihre E-Mail-Adresse an. '; else if(!preg\_match('/^[\_a-z0-9-]+(\.[\_a-z0-9-]+)\*@[a-z0-9-]+(\.[a-z0-9-]+)\*(\.[a-z]{2,6})$/i',$from\_mail)) $err\_text.='Bitte geben Sie eine gültige E-Mail-Adresse an. '; if(trim($mail\_subject)=='') $err\_text.='Bitte geben Sie einen Betreff ein. '; if(trim($mail\_text)=='') $err\_text.='Bitte geben Sie einen Nachrichtentext ein. '; // \*\*\* Zu langen Text abschneiden \*\*\* if(strlen($mail\_text)\>4500) { $mail\_text=substr($mail\_text,0,4500).'... (Text wurde gekürzt!)'; } $from\_name=str\_replace(chr(34),"''",$from\_name); $mail\_subject=str\_replace(chr(34),"''",$mail\_subject); $from\_name=stripslashes($from\_name); $from\_mail=stripslashes($from\_mail); $mail\_subject=stripslashes($mail\_subject); $mail\_text=stripslashes($mail\_text); if (($send == '1') && ($err\_text != '')) { echo ' **Fehler:** '; echo $err\_text.' '; } if (($send != '1') || ($err\_text != '')) { ?\>   Bitte AuswählenWebmasterWehrführerStellv. WehrführerVorsitzenderStellv. VorsitzenderJugendwartIhr Name:  Ihre E-Mail-Adresse: Betreff: Text: _(max. 4.500 Zeichen)_ =$mail\_text?\>

$mail_to = $_post[‚empfaenger‘];// Ihre Mailadresse (Empfängeradresse)

sollte unten ins

Hallo Danke für die Info.

Allerdings kann ich direkt nichts damit anfangen bzw. verstehe nicht was Sie wollen. Würden Sie es einfach mal oben in den PHP-Script einbauen, vielleicht auch dicker schreiben die jeweilige Stelle damit ich es kapiere? Danke.

Hallo
Leider kann ich dir hier nicht weiterhelfen, ich bin nicht sehr gut in PHP

Hallo,

ich verstehe nicht genau, was du mit Drag and Drop für die Empfängerauswahl meinst. Sinniger erscheint mir ein Multiple Select (http://de.selfhtml.org/html/formulare/auswahl.htm#li…). Ich habe selbst nicht damit gearbeitet, aber wenn der Hinweis auf der angegebenen Seite stimmt, solltest du als Name des Feldes z.B. tomail[] verwenden. Über dieses Array kannst du dann vor dem Abschicken iterieren:

$mail_to=GetParam(‚tomail‘); //Vorverarbeitung ergänzen
$senderror=0;
for($i=0;$iDie Nachricht wurde erfolgreich abgesendet.";
echo " Zurück zum Formular ";
}else{
echo " Beim Versenden der Nachricht ist ein Fehler aufgetreten! ";
echo " Zurück zum Formular ";
}

Viele Grüße
Alex

Zuerst musst du in dein Formular natürlich ein select-Feld integrieren damit der User auswählen kann wohin es geschickt werden soll.

Empfänger AEmpfänger B

Im PHP-Script muss nun $mail_to gesetzt werden. Dies macht man am besten mit einer Empfänger-Liste damit man selber die Kontrolle über die Adressen behält. Ich nehm hier mal deine Variante für die POST-Werte:

$list = array();
$list['a'] = "[email protected]";
$list['b'] = "[email protected]";
$receiver = GetParam('receiver');
$mail\_to = $list[$receiver];