ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / Formular mit auswahl mehrere Empfänger


Seite 1 von 1

mikeda schrieb am 04.02.2004 um 12:24 Uhr

Hallo,
ich hoffe hier kann mir jemand helfen.
Ich möchte ein Formular erstellen in dem der Benutzer
angaben machen kann ( Name - Url - email etc.)
dann aber mit Checkboxen mehrere Empfänger die
diese Mail bekommen sollen auswählen kann.
Also, die Mail soll dann per auswahl an Mail1 + Mail2 + Mail3 usw.
gehen wobei Mail4 + Mail 5 wenn nicht angeklickt diese Mail
nicht erhalten sollten.

vielen Dank
Michael

Beater schrieb am 04.02.2004 um 12:49 Uhr

ich weiß nicht genau was das mit dem thwboard zutun hat, aber prinzipiell sollte dein formular in etwa so aussehen.

<input type="checkbox" name="mails[]" value="foo@bar.org" />
<input type="checkbox" name="mails[]" value="bar@foo.org" />
<input type="checkbox" name="mails[]" value="org@foo.bar" />
...

auf der php Seite dann
$header = 'FROM: user@mydomain.org';
$header .= 'BCC: ' . implode('; ', $_POST['mails']);

mail($to, $subject, $body, $header);

mikeda schrieb am 04.02.2004 um 13:15 Uhr

Hallo,
sorry das ich das hier reineschrieben habe -
aber ich habe nirgends jemanden gefunden der mir
bei meinem Problem helfen kann.
Ich habe das jetzt mal so eingebaut - doch leider bekomme
ich nur eine MAil gesendet.

Ich habe hier mal meinen send.php Code
Wo muss ich das denn mit dem $header ...
einsetzten?

Code:
<?

//AB hier konfigurieren ---------------------------------------------------------------------


//email des webmasters eingeben
$webmas="email@test.de";

//hier websitenamen eingeben
$site="testform";

//hier die url eingeben, auf die der user weitergeleitet wird
$weiter = "http://www.domain.de";


//STOP bis hier konfigurieren --------------------------------------------------------------
$message = "Hallo,\ntestformular:\n\n";

if($REQUEST_METHOD == "POST"){
foreach($HTTP_POST_VARS as $sch => $wert){
$message .= $sch." : ".$wert."\n";
}
}
elseif($REQUEST_METHOD == "GET"){
foreach($HTTP_GET_VARS as $sch => $wert){
$message .= $sch." : ".$wert."\n";
}
}

mail($webmas, "testform", $message, "From: $von<$email>");
$datei = fopen( "reply.dat", "r" );
$bestatigung = fread( $datei, filesize( "reply.dat" ) );
fclose( $datei );
mail( $email, "vielen Dank für Ihre Email", $bestatigung, "From: $site<$webmas>");
?>

Ich bin Neuling und blicke da noch niczt so durch.
Wäre nett wenn du mir helfen könntest - auch wenn das Thema
hier nicht reingehört. Aber du bist der erste Kompetente der
mir helfen könnte.
Gruss
Michael

MrNase schrieb am 04.02.2004 um 13:15 Uhr

Fragen die nicht das ThWboard betreffen bitte in Zukunft in "PHP / MySQL Probleme".

Narodnaja schrieb am 04.02.2004 um 20:41 Uhr

In den mail-header alle Adressaten als Empfänger eintragen lassen, also nicht nur an $webmas alias "email@test.de", sondern die Variable entsprechend der Arrays belegen lassen. Hab sowas mal so gelöst:

for ($i=0; $i<sizeof($empfaenger); $i++)
    {
        if ($empfaenger[$i]) // Leere $empfaenger[] rausfiltern 
        {
            $empfaengerliste .= $empfaenger[$i];
            if ($i != sizeof($empfaenger))
            {
                $empfaengerliste .= ","; //Kommas dazwischen
            } 
        }
    }
}
$sendemail = @mail($empfaengerliste, $betreff, $daten, "From: ".$mailabsender);

Dabei sind bei mir die einzelnen Empfängeradressen mit $empfaenger[0], $empfaenger[1] usw benannt.

Du müsstest halt vor der Schleife noch $empfaengerliste = "email@test.de"; setzen.

Beater schrieb am 04.02.2004 um 20:45 Uhr

Narodnaja postete
In den mail-header alle Adressaten als Empfänger eintragen lassen, also nicht nur an $webmas alias "email@test.de", sondern die Variable entsprechend der Arrays belegen lassen. Hab sowas mal so gelöst:

for ($i=0; $i<sizeof($empfaenger); $i++)
    {
        if ($empfaenger[$i]) // Leere $empfaenger[] rausfiltern 
        {
            $empfaengerliste .= $empfaenger[$i];
            if ($i != sizeof($empfaenger))
            {
                $empfaengerliste .= ","; //Kommas dazwischen
            } 
        }
    }
}
$sendemail = @mail($empfaengerliste, $betreff, $daten, "From: ".$mailabsender);

Dabei sind bei mir die einzelnen Empfängeradressen mit $empfaenger[0], $empfaenger[1] usw benannt.

Du müsstest halt vor der Schleife noch $empfaengerliste = "email@test.de"; setzen.

Unterschied zu meiner Version?

mikeda schrieb am 05.02.2004 um 09:44 Uhr

Hi,
erst mal vielen Dank für die Hilfe.
Ich habe das mal reingebracht doch leider
bekomme ich eine Fehlermeldung. Ich weiss auch nicht ob ich
das an der richtigen Stelle eingebaut habe.
...................

$message = "Hallo,\nOnlineformular test:\n\n";

if($REQUEST_METHOD == "POST"){
foreach($HTTP_POST_VARS as $sch => $wert){
$message .= $sch." : ".$wert."\n";
}
}
elseif($REQUEST_METHOD == "GET"){
foreach($HTTP_GET_VARS as $sch => $wert){
$message .= $sch." : ".$wert."\n";
}
}

for ($i=0; $i<sizeof($empfaenger); $i++)
{
if ($empfaenger[$i]) // Leere $empfaenger[] rausfiltern
{
$empfaengerliste .= $empfaenger[$i];
if ($i != sizeof($empfaenger)) <.-. HIER SOLL DER FEHLER SEIN!!!
{
$empfaengerliste .= "email1@test.de","email2@test.de"; //Kommas dazwischen
}
}
}
}
$sendemail = @mail($empfaengerliste, $betreff, $daten, "From: ".$mailabsender);
mail($webmas, "Formular test", $message, "From: $von<$email>");
..............................
Im Formular selber habe ich das so gemacht:
<input type="checkbox" name="mails[0]" value=""/> 1
<input type="checkbox" name="mails[1]" value=""/> 2
<input type="checkbox" name="mails[2]" value=""/> 3

vielen Dank
Michael

Narodnaja schrieb am 05.02.2004 um 21:10 Uhr

@beater: meine ist weniger elegant :D

@mikeda:

$empfaengerliste .= "email1@test.de","email2@test.de"; //Kommas dazwischen

klappt nicht, weil du nach jeder eingetragenen Adresse dauernd deine beiden Adressen hinzufügst, und zwar ohne Komma.

das muss so aussehen:

$empfaengerliste .= ","; //Kommas dazwischen

und _vor_ die Schleife ein $empfaengerliste = "email1@test.de";

sonst erkenn ich grade keinen Fehler.

Im Übrigen empfehle ich Beaters Version, die gefällt mir doch um einiges besser =)

Seite 1 von 1