E-Mail sendtto(). Aber nur einen Empfänger von mehreren auswählen

messmar

Erfahrenes Mitglied
Hi,

ich möchte Daten aus einem Fromular per sendto()-Funktion schicken.
Ich habe aber 4 Empfänger, deren E-Mail-Adressen in einem Select-Box
aufgelistet sind:

<select name="partner" size="1" class="m_adress">
<option>xxxxxxx@web.de</option>
<option>yyyyyyy@web.de</option>
<option>zzzzzzz@web.de</option>
<option>ddddddd@web.de</option>
</select>

Der User wählt sich dann eine aus, und klickt auf senden.

Wie kann ich es dann erreichen, dass das Skript die richtige E-Mail-Adresse, die der
User ausgerwählt hat, verwendet und die E-Mail auch hinschikt?

Vielen Dank und Gruß
Amin
 
HTML:
<select name="partner" size="1" class="m_adress">
<option value="xxxxxxx@web.de">xxxxxxx@web.de</option>
<option value="yyyyyyy@web.de">yyyyyyy@web.de</option>
<option value="zzzzzzz@web.de">zzzzzzz@web.de</option>
<option value="ddddddd@web.de">ddddddd@web.de</option>
</select>

<? 
mail($partner,"Betreff","Inhalt"); 
?>


Dann hat die Variable $partner den gewünschten Wert
 
Zuletzt bearbeitet:
Was ist den sendto() ?

Du meinst vielleicht mail()?

Dann liest du einfach $_GET['partner'] bzw $_POST['partner'] aus, jenachdem mit welcher method du dein Form veschickst und nutzt diese Variable als empfänger.
Sauberer wäre es hier wenn du dir im Script ein Array anlegst mit Namen / Nummer als schlüssel, damit du die E-mail nicht im Quelltext hinterlegst (->SPAM). Des weiteren würdest du irgendwelche Injektionprobleme vermeiden.

PHP:
$receip = array('x' => 'xxxxxxx@web.de', 'y' => 'yyyyyyy@web.de', 'z' => 'zzzzzzz@web.de', 'd' =>'ddddddd@web.de' );

if( !array_key_exists( $_GET['partner'], $receip) )
   die('Ungueltiger Empfaenger');
else
   mail(...); // Empfänger: $receip[$_GET['partner']]
 
dr_Alex hat gesagt.:
Code:
<select name="partner" size="1" class="m_adress">
<option value="xxxxxxx@web.de">xxxxxxx@web.de</option>
<option value="yyyyyyy@web.de">yyyyyyy@web.de</option>
<option value="zzzzzzz@web.de">zzzzzzz@web.de</option>
<option value="ddddddd@web.de">ddddddd@web.de</option>
</select>

Dann hat die Variable $partner den gewünschten Wert

Aber nur wenn register_globals aktiviert ist, was eigentlich nur zu unschönem Programmieren verleitet, noch weitere Nachteile hat und daher ab php 4.3.irgendwas standardmässig deaktiviert ist.
 
Vielen Dank für die Hilfe.

Jetzt habe ich die folgende Fehlermeldung:

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in e:\apache\htdocs\pan_adress\php\mail.php on line 113

Ich weiß, daß es mit dem Mail-Server-Name zu tun hat, aber ich bekomme es nicht hin.

Danke
Amin
 
Und das ist das komplette Skript, damit man weißt wovon ich rede:

<?php



// Zu Testzwecken
// 1 => Der Inhalt der eMail wird in eine Textdatei geschrieben (wenn Sie offline testen)

// 0 => Die eMail wird verschickt

$offline = 0;



$email_from = "welt9@web.de";


// eMail-Adresse des Versenders als Absenderadresse nutzen (um direkt anworten zu können)
// 1 => Ja
// 0 => Nein

$senders_email = 1;



$name_of_email = "eMail";






$send_dat = array
("dat1" => array($partner, "Kontakt über Internet"),
#"dat2" => array("", "", "", ""),
#"dat3" => array("", "", "", ""),
);





$ignore_fields = array('send_index','Submit','senden_y');

###########################################################

###########################################################

$send_index = $HTTP_POST_VARS['send_index'];

// Prüfung, welches array zu senden verwendet werden soll

if ($send_index != "") {
$st = "$send_index";
} else {
$st = "dat1";
}
$mailto = $send_dat[$st][0];
//$mail_cc = $send_dat[$st][1];
$subject = $send_dat[$st][1];



// Datum (+deutsche Tage)
$name_tag[0] = "Sonntag";
$name_tag[1] = "Montag";
$name_tag[2] = "Dienstag";
$name_tag[3] = "Mittwoch";
$name_tag[4] = "Donnerstag";
$name_tag[5] = "Freitag";
$name_tag[6] = "Samstag";
$num_tag = date( "w");
$day = $name_tag[$num_tag];
$year = date( "Y");
$n = date( "d");
$month = date( "m");
$time = (date("H:i"));

// Datum einfügen
$mts = ":: Gesendet am $day, den $n.$month.$year - $time Uhr ::<br><br>";

// Formularfelder auslesen und in die eMail "einsetzen"
// Zu ignorierende Felder werden NICHT eingesetzt
while (list($nam,$val) = each($HTTP_POST_VARS)) {
if (in_array($nam, $ignore_fields)) continue;
$mts .= ":: $nam ::<br>$val<br><br>";
}
$mts = str_replace("<br>", "\n", $mts);

$mts = strip_tags($mts);
$mts = stripslashes($mts);

// Absender-eMail-Adresse
if ($senders_email == 1) {
$email_from = $HTTP_POST_VARS["$name_of_email"];
}

$header = "From: $email_from";

// Kopie schicken
//if (!empty($mail_cc)) {
// $header .= "\n";
// $header .= "Cc: $mail_cc";
//}

// email zum testen in ein Textfile schreiben...
if ($offline == 1) {
$testmail = fopen("email.txt","w+");
fwrite($testmail,$mts);
fclose($testmail);
}
if ($offline == 0) {
// ...eMail verschicken
mail ($mailto,$subject,$mts,$header);
} else {

// Fehlermeldung, wenn die eMail nicht geschickt werden konnte

echo "Es ist ein Fehler aufgetreten!\n";
echo "Bitte versuchen Sie es erneut...";
}
?>

Vielen Dank nochmal
Amin
 
Wieso mit dem Mailserver namen?
Localhost steht nur für die Loopbackadresse 127.0.0.1
also die Lokale IP eines jeden rechners.
DU hast vermutlich keinen Mailserver laufen.
Such hier im Forum mal nach sendmail + windows o.ä.
denn es gibt da verschiedene schlanke Lösungen.
 
Zurück