• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mails an E-Mailadressen aus MySQL verschicken

Status
Für weitere Antworten geschlossen.

lucarp

Mitglied
Hallo,

Ich habe ein Newsletterformular auf meiner Seite und nun auch schon einige Abonnenten.

Jetzt bin ich gerade dabei ein kleines PHP Script zu schreiben mit dem ich dann die Newsletters verschicken kann.

Bis jetzt sieht das so aus und beim verschicken kommt folgende Meldung:

Access denied for user 'www-data'@'192.168.43.55' (using password: NO)

PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
  
    </head>
    <body style="background:#99cc33; text-align:center;">
    <br><br><br>
    <h1>Newsletter</h1>
    <br>
    <form action="<?php $PHP_SELF ?>" method="post" enctype="multipart/form-data">
    Betreff:<br>
    <input type="text" size="20" name="betreff"><br>
    Nachricht:<br>
    <textarea type="text" rows="10" cols="30" name="nachricht">
    </textarea><br>
    Administratorpasswort:<br>
    <input type="password" size="20" name="adminpass"><br>
    <br>
    <input type="submit" name="senden" value="Newsletter verschicken">
    </form>
    
    <?php
    $senden = $_POST['senden'];
    $adminpass = $_POST['adminpass'];
    $betreff = strip_tags($_POST['betreff']);
    $nachricht = strip_tags($_POST['nachricht']);

    


$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="********"; // MySQL-User angeben
$mysqlpwd="*******"; // Passwort angeben
$mysqldb="*******"; // Gewuenschte Datenbank angeben
$mysqltable="*******"; // Gewuenschte Tabelle angeben

if (isset ($senden) && $adminpass == ("********"))
    {

        $alle_eintraege = mysql_query ( "SELECT * FROM $mysqltable ORDER BY id ASC" )  or die (mysql_error());
        if ( mysql_num_rows ( $alle_eintraege ) > 0 )
            {
            while ( $eintrag = mysql_fetch_row ( $alle_eintraege ) )

                {
                mail ( $eintrag[1] , 'Newsletter' , $nachricht , "From:*Absender*" );

                }
            }
    }
?>

</body>
 
Das liegt daran, dass das Passwort usw. für MySQL falsch ist. (Ich weiß es wurde zensiert, aber unzensiert ist es trotzdem falsch)
 
Also das Passwort stimmt.

Den User www-data gibt es bei mir nicht, aber kann es sein, dass das was mit dem E-Mailversand zu tun hat??

denn wenn ich eine E-Mail über ein php script verschicke, steht da im Absender www-data drin.

weiß nur nicht was ich damit anfangen soll.
 
okay ich hatte das wichtigste ja vergessen

PHP:
$db_connect = mysql_connect ($mysqlhost , $mysqluser , $mysqlpwd ) or die ("Es konnte keine Verbindung zur Datenbank hergestellt werden");

$db_database = mysql_select_db ($mysqldb) or die ("Die Datenbank konnte nicht ausgewählt werden");
jetzt habe ich aber ein andere frage und zwar soll die Mail ja an alle adressen in der DB geschickt werden.

mit

$eintrag

kann ich die alle auslesen aber wie bekomme ich ein komma zwischen die adressen oder muss ich das mit BCC machen??

Danke
 
Langsam, erstman solltest du dich um die Verbindung zu deiner Datenbank kümmern und die Geschichte mit dem Mail-Versandt danach angehen.

www-data ist bei Debian der user, der für den Webserver zuständig ist. Den kannst du natürlich nicht für die Verbindung zu deiner Datenbank nehmen, wenn es den dort garnicht gibt. Da musst du schon einen nehmen, der auch zugriff auf die Datenbank hat.
 
Es ist ja nicht so, dass ich das erste mal zu dieser Datenbank verbinde.

Also die Verbindung steht jetzt schon. hatte ja nur den eigentlichen Verbindungsaufbau vergessen.

ich kann mair jetzt zumindest mal die Emailadresse mit
PHP:
echo "$eintrag[email]";

ausgeben lassen.

Jetzt muss ich nur noch den Emailversand hinbekommen

derzeit sieht es so aus
PHP:
mail ( $eintrag[email] , '$subject' , $nachricht , "From:$absender" );
 
PHP:
<?php
/* (c) Vincent Lycoops
 * Done in 2008 (19th Octobre)
 */
// Ab hier musst du Sachen ändern.
$richtiges_admin_pw = "******";
$absender_e_mail = "[email protected]";

$MYSQL_host = "localhost";
$MYSQL_user = "Ich";
$MYSQL_passwort = "Mein Passwort";
$MYSQL_datenbank = "datenbank_01";
$MYSQL_tabelle = "e_mail_tabelle";

// Ab hier wird nichts mehr ändern.
$link = mysql_connect($MYSQL_host, $MYSQL_user, $MYSQL_passwort);
mysql_select_db($MYSQL_datenbank);
$headers = "From: " .$absender_e_mail."\r\n";
$headers.= "Reply-To: ".$absender_e_mail."\r\n";
$headers.= "Content-Type: text/html\r\n";
$headers.= "X-Mailer: PHP/".phpversion();
$a_pw = md5($richtiges_admin_pw);
if (isset($_POST["adminpass"]) && isset($_POST["betreff"]) && isset($_POST["nachricht"]) && md5($_POST["adminpass"])==$a_pw) {
    $betreff = $_POST["betreff"];
    $nachricht = $_POST["nachricht"];
    $sql = "select * from ".$MYSQL_tabelle;
    $result = mysql_query($sql) or die(mysql_error);
    echo "<pre>";
    $i = 0;
    while($row = mysql_fetch_array($result, MYSQL_NUM)) {
        mail($row[0], $betreff, $nachricht, $headers);
        echo ("Es wurde eine E-Mail an ".$row[0]." versandt\n");
        $i++;
    }
    if ($i == 0) {
        echo "Entweder gibt es keine User in der Tabelle oder es gab einen Fehler";
    }
    echo "</pre>";
}
?>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben