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;
}
}
?\>
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)
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?\>
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.
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 ";
}
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: