PHP+Mysql Newsletter Problem

bhalili

Mitglied
Hallo Leute, ich war auf der Suche nach einem einfachen Newsletter-Script und hab auch ein Beispiel gefunden, was auch sehr simpel ist und ich es in meinem Projekt auch leicht einfügen kann. Mein Problem ist aber, das ich keine E-Mail bekomme. Das
PHP:
echo"Der Newsletter wurde erfolgreich an $i Abonnenten verschickt!";
wird bei mir nicht angezeigt, wenn ich auf senden drücke. Wäre nett wenn Ihr mal drüber schaut.

PHP:
<html>
<head>
<title>Newsletter versenden</title>
</head>
<body>

<?php

$Zugangspasswort = "admin";
$Absender        = "FROM: Newsletter <info@test.de>";

if($_REQUEST['Send'] && $_REQUEST['Passwort']==$Zugangspasswort)
{
    $DatabasePointer = mysql_connect("localhost", "user", "passwort");
    mysql_select_db("datenbank", $DatabasePointer);
   
    if($NewsletterVersenden)
    {
        $ResultPointer = mysql_query("SELECT email FROM ft_user", $DatabasePointer);

        for($i = 0; $i < mysql_num_rows($ResultPointer); $i++)
        {
            $Result = mysql_fetch_object($ResultPointer);
            mail($Result->email, $Betreff, $Text, $Absender);
        }

        echo"Der Newsletter wurde erfolgreich an $i Abonnenten verschickt!";
    }
    else
    {
?>
<html>
    <head></head>
    <body>
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
<input name="Passwort" type="hidden" value="<?php echo$_REQUEST['Passwort']; ?>">
<input name="NewsletterVersenden" type="hidden" value="1">
<table border="0">
<tr>
  <td>Betreff</td>
  <td><input name="Betreff" size="40" type="text"></td>
</tr>
<tr>
  <td>Text</td>
  <td><textarea cols="40" name="Text" rows="20"></textarea></td>
</tr>
<tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Newsletter versenden"></td>
</tr>
</table>
</form>
</body>
</html>
<?php
    }
}
else
{
?>
<html>
    <head></head>
    <body>
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
<table border="0">
<tr>
  <td>Passwort</td>
  <td><input name="Passwort" size="10" type="password"></td>
</tr>
<tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Login"></td>
</tr>
</table>
</form>
</body>
</html>
<?php
}
?>

</body>
</html>
 
Hi

das gefundene Script ist von vorne bis hinten schlecht. zB.
  • werden Variablen verwendet, die nirgends definiert wurde
    => kann schon mal nicht funktionieren
  • Plaintextpassworte => schrecklich,
  • die mysql_irgendwas-Funktionen sind seit vielen Jahren zu vermeiden und
    werden mit der nächsten PHP-Version in ein paar Wochen endgültig entfernt
    => funktioniert dann auch deswegen nicht mehr.
  • Der HTML-Teil hat viele grundlegene Probleme
  • ...

Das Script soll also einfach eine Liste von Mailadressen aus einer DB holen und
ein eingegebenen Mail an alle schicken? [Warum kein normales Mailprogramm
dafür verwenden?] Wieviel Adressen sind denn zu erwarten (wegen
Antispammaßnahmen der Provider)?
 
Hallo bhalili,

die Variable $NewsletterVersenden wurde nicht definiert, entsprechend wird auch kein echo folgen.

Liebe Grüße
Splater
 
Hallo Splatter und sheel, hab das jetzt so geändert und es funktioniert.

PHP:
<html>
<head>
<title>Newsletter versenden</title>
</head>
<body>

<?php

$Zugangspasswort = "admin";
$Absender        = "FROM: Newsletter <info@test.de>";
$search = $_POST['NewsletterVersenden'];
$Betreff = $_POST['Betreff'];
$Text = $_POST['Text'];



if($_REQUEST['Send'] && $_REQUEST['Passwort']==$Zugangspasswort)
{
    $DatabasePointer = mysql_connect("localhost", "user", "passwort");
    mysql_select_db("datenbank", $DatabasePointer);

    if($search)
    {
        $ResultPointer = mysql_query("SELECT email FROM ft_user", $DatabasePointer);

        for($i = 0; $i < mysql_num_rows($ResultPointer); $i++)
        {
            $Result = mysql_fetch_object($ResultPointer);
            mail($Result->email, $Betreff, $Text, $Absender);
        }

        echo"Der Newsletter wurde erfolgreich an $i Abonnenten verschickt!";
    }
    else
    {
?>
<form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
<input name="Passwort" type="hidden" value="<?php echo$_REQUEST['Passwort']; ?>">
<input name="NewsletterVersenden" type="hidden" value="1">
<table border="0">
<tr>
  <td>Betreff</td>
  <td><input name="Betreff" size="40" type="text"></td>
</tr>
<tr>
  <td>Text</td>
  <td><textarea cols="40" name="Text" rows="20"></textarea></td>
</tr>
<tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Newsletter versenden"></td>
</tr>
</table>
</form>
<?php
    }
}
else
{
?>

<form action="<?php echo$_SERVER['PHP_SELF']; ?>" method="post">
<table border="0">
<tr>
  <td>Passwort</td>
  <td><input name="Passwort" size="10" type="password"></td>
</tr>
<tr>
  <td align="center" colspan="2"><input name="Send" type="submit" value="Login"></td>
</tr>
</table>
</form>

<?php
}
?>

</body>
</html>
 
Ich war vllt. noch nicht deutlich genug, aber glaub mir, du willst dieses Script nicht verwenden.
Wenn du mir die Fragen von oben beantwortest können wir dir bei der Suche (oder Erstellung)
von einem besseren helfen
 
Hallo sheel, wie du oben schon gefragt hast, soll das Script einfach eine Liste von Mailadressen aus einer DB holen und
ein Nachricht in Textform (keine HTML-E-Mail und keine Anhänge) an alle senden. Es sind ca. 100 E-Mail-Adressen in der Datenbank.

MfG
 
Zurück