Newsletterformular

RuthG

Mitglied
Hallo,

ich hab ein Newsletter-Formular übernommen, dass immer funktioniert hat. Jetzt plötzlich bekomme ich immer die Meldung das die Mailadress invalid ist bzw. das in der Zeile 17 (dort wo die abfrage ist) ein Fehler ist.

Ich find nur leider keinen Fehler:

PHP:
<?php
/* EDITIEREN ANFANG */
$empfaenger= 'newsletter@roithner-laser.com';
$betreff= 'newsletter subscription';
/* EDITIEREN ENDE */
/* Skript liest Attribut-Werte-Paare aus: */
foreach($HTTP_POST_VARS as $name=> $value) {
$botschaft.= "$name=$value\n";
}
/* Versenden! Bitte Mail-Feld im Formular vorsehen! */
if ($mail) { // Ist das Mail-Feld vorhanden?
/* Dann wird Versenden-Funktion mail() aktiv */
mail($empfaenger, $betreff, $botschaft, "From: $Mail");
/* und der Benutzer sieht folgende Zeilen */
echo "<center><br><br><br><br><br>Successfully subscribed.</center>";
}
/* Sonst gibt es eine Fehlermeldung: */
else { 
echo "Your email-adress is invalid. Try again.";

}
?>

Kann mir jemand weiter helfen?
Danke, LG ruth
 
$mail ist doch auch nirgends deklariert.

$HTTP_POST_VARS ist übrigens veraltet und wird nicht mehr empfohlen. Stattdessen lieber $_POST nehmen.
 
Hab es jetzt selbst mal probiert:

PHP:
<?php
$mail= $_POST['mail'];


if (empty($mail)) $fehler .= "<li>Please, fill in your mail adress. </li>";
if (empty($fehler)) {

$empfaenger= 'r.giefing@roithner-laser.com';
$betreff= 'newsletter subscription';
$from= 'From: ' .$mail;

mail($empfaenger,$betreff,$mail,$from);
echo "<center><br><br><br><br><br>Successfully subscribed.</center>";

} else "Your email-adress is invalid. Try again.";


?>

Es funktioniert so weit, dass ich die Meldung bekomme "successfully subscribed", aber das Mail kommt nicht an. Hab ich etwas übersehen? Hab mich dabei an einem anderem Formular gehalten, welches einwandfrei funktioniert.

Danke, LG Ruth
 
Hi,

versuche mal folgendes:

PHP:
<?php
$mail= $_POST['mail'];


function checkEmail($email) 
	{
	if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email)) 
		{
		return false;
		}
	return true;
} 

if(checkEmail($mail) == true)
	{
	$empfaenger= 'r.giefing@roithner-laser.com';
	$betreff= 'newsletter subscription';
	$from= 'From: ' .$mail;

	if(mail($empfaenger,$betreff,$mail,$from))
		{
		echo "<center><br><br><br><br><br>Successfully subscribed.</center>";
		}
	else
		{
		echo "Fehler beim Versenden der E-Mail";
		}

	}


else
	{
	$fehler .= "<li>Please, fill in your mail adress. </li>";
	} 



?>

Poste dann gerade hier was rauskommt. Habe das Ganze jetzt auf die schnelle leider nicht testen können..
 
Zuletzt bearbeitet:
Kommt eine Fehlermeldung:
Parse error: syntax error, unexpected '}', expecting ',' or ';' in /var/www/web878/html/xxx/newsletter.php on line 29
 
PHP:
    if(mail($empfaenger,$betreff,$mail,$from))
        {
        echo "<center><br><br><br><br><br>Successfully subscribed.</center>";
        }
    else
        {
        echo "Fehler beim Versenden der E-Mail";
        }

Im else-Block fehlte das ; vom echo command.
 
Jup, stimmt habs eben entdeckt: Nach dem echo "Fehler..." fehlt ein ;

Habe es oben editiert!


EDIT: Mist zu langsam! Den letzten beissen die Hunde. Verdammte Viecher :-)
 
Also hab das nun getestet.
Das echo "Successfully subscribed." wird ausgegeben, aber es wird kein Mail versendet (oder es kommt nicht an).

Was noch gut wäre, eine Meldung wenn die E-Mail-Adresse falsche Zeichen enthält. Jetzt kommt da nur eine leere Seite
 
Hmmm... auf welchem Betriebssystem führst du das Script aus? Unter Windows funktioniert das nicht so ohne weiteres...
 
Hilfreich wäre es wenn Du uns etwas genauer Beschreiben könntest wie sich das "Nicht verschicken" äußert. Erscheint eine Fehlermeldung oder kommt die Mail nur nicht an? Da er ja "Success" ausgibt sollte er die Mail eigentlich an den SMTP Server übergeben. Evtl hat sich ja an diesem in letzter Zeit was geöndert, ein anderer Port, Firewall etc.

Falls die Mail ungültig ist, z.B. so was hier: test@test.test@@test.org sollte er im entsprechenden else Zweig auch etwas ausgeben...
 
Zurück