Avatar billede vind Nybegynder
25. maj 2004 - 14:45 Der er 17 kommentarer og
1 løsning

php-mail til brugere i database

Hej Eksperter.
Jeg er stadig ret grøn udi php, så det er jo en oplagt mulighed at søge efter hjælp her på eksperten. :)
Jeg har en lille database hvor navn,adr, mail mm. ligger gemt om nogle bestyrelsesmedlemmer i en forening.
Jeg vil gerne lave et lille mini-script som gør det muligt at sende en mail ud til disse bestyrelsesmedlemmer med afsendernavn, afsendermail, emne og selvfølgelig selve beskeden. Tabellen hedder 'bestyrelseadr' og rækken med medlemmernes email hedder 'mail'.
Håber måske der er nogle der kan hjælpe!

Venlig hilsen
Andreas Vind.
Avatar billede mickey777 Nybegynder
25. maj 2004 - 14:49 #1
Prøv at se på dette eksempel

http://www.script.dk/sourcecode.jsp?category=19&resourceId=1138

Istedet for at læse fra en fil, skal du så sætte den op til at hente data fra en database
Avatar billede mike_mike Nybegynder
25. maj 2004 - 15:01 #2
<?php
    $db = mysql_connect("server", "brugernavn", "kodeord");  //forbind til mysql
    mysql_select_db("database", $db);  //forbind til database

    $result = mysql_query("SELECT * FROM `bestyrelseadr`",$db);  //indlæs fra datasen
    $numofposts=mysql_num_rows($result);  //tæl antal af poster
   
    $title = "Skriv din titel her.";  //sæt titel
    $message = "Selve din besked her.";  //sæt besked tekst
   
    for ($i=0;$i<$numofposts;$i=$i+1) {  //løkke der løber alle mailadresserne igennem
        £emailadress = mysql_result($result,$i,"mail");  //indlæser mailadressen
        mail($emailadress,$title,$message);  //send mail
    }

?>


Dette burde virke. Det er klart at du kan lave en side hvor du kan udfylde titel og besked i en form så du ikke behøver at skrive det direkte i scriptet. Håber at det hjalp dig på vej. Bare spørg hvis du vil have uddybet noget.... :)
Avatar billede mike_mike Nybegynder
25. maj 2004 - 15:03 #3
ups linjen

£emailadress = mysql_result($result,$i,"mail");  //indlæser mailadressen

skal selvfølgelig hedde

$£emailadress = mysql_result($result,$i,"mail");  //indlæser mailadressen

hvor  £ er udskiftet med  $ :)
Avatar billede mike_mike Nybegynder
25. maj 2004 - 15:03 #4
ehm

$emailadress = mysql_result($result,$i,"mail");  //indlæser mailadressen

ok nu stopper jeg... :P
Avatar billede sostack Nybegynder
25. maj 2004 - 15:09 #5
Fix og (næsten)færdig:
<?php
if($_POST["knap"] == "send")
{
    $afsendte = 0; //tæller der finder ud af hvor mange mails der blev sendt
    $fra = "Afsender"; // kan være foreningens navn f.eks.
    $replyto = "din_mail@adresse.dk";
    $emne = $_POST["emne"];
    $teksten = $_POST["tekst"];
   
    //forbind til din database her
   
    $qry_modtagere = "SELECT `mail` FROM `bestyrelseadr`";
    $adresser = mysql_query($qry_modtagere) OR DIE(mysql_error());
    WHILE(false !== ($modtager = mysql_fetch_assoc($adresser)))
    {
        if (mail($modtager["mail"], $emne, $teksten, "From: " . $fra . "\r\n" . "Reply-To: " . $framail . "\r\n"))
        {
            $afsendte++;
        }
    }
} else {
?>
<center>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<table cols="2" border="0">
<tr>
    <td>
        Emne:
    </td>
    <td>
        <input type="text" name="emne" size="50">
    </td>
</tr>
<tr>
    <td>
        Tekst:
    </td>
    <td>
        <textarea type="textarea" name="tekst" cols="35" rows="8"></textarea>
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" name="knap" value="send">
    </td>
</tr>
</table>
</form>
</center>
<?php
}
?>

//sostack
Avatar billede sostack Nybegynder
25. maj 2004 - 15:11 #6
}
} else {
kan rettes til:

}
echo $afsendte . " mails blev sendt!";
} else {


//sostack
Avatar billede vind Nybegynder
25. maj 2004 - 15:19 #7
Sådan ser scriptet ud nu:

<?php
if($_POST["knap"] == "send")
{
    $afsendte = 0; //tæller der finder ud af hvor mange mails der blev sendt
    $fra = "elevforeningen"; // kan være foreningens navn f.eks.
    $replyto = "test@test.dk";
    $emne = $_POST["emne"];
    $teksten = $_POST["tekst"];
   
    //forbind til din database her
    $db = mysql_connect("localhost", "forening", "*******");  //forbind til mysql
    mysql_select_db("elevforening", $db);  //forbind til database
   
    $qry_modtagere = "SELECT `mail` FROM `bestyrelseadr`";
    $adresser = mysql_query($qry_modtagere) OR DIE(mysql_error());
    WHILE(false !== ($modtager = mysql_fetch_assoc($adresser)))
    {
        if (mail($modtager["mail"], $emne, $teksten, "From: " . $fra . "\r\n" . "Reply-To: " . $framail . "\r\n"))
        {
            $afsendte++;
        }
}
echo $afsendte . " mails blev sendt!";
} else {
?>
<center>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="POST">
<table cols="2" border="0">
<tr>
    <td>
        Emne:
    </td>
    <td>
        <input type="text" name="emne" size="50">
    </td>
</tr>
<tr>
    <td>
        Tekst:
    </td>
    <td>
        <textarea type="textarea" name="tekst" cols="35" rows="8"></textarea>
    </td>
</tr>
<tr>
    <td colspan="2" align="center">
        <input type="submit" name="knap" value="send">
    </td>
</tr>
</table>
</form>
</center>
<?php
}
?>

Men der bliver ikke afsendt nogen mails og den skriver også at "0 mails blev sendt!".
Kan det have noget med min databaseforbindelse at gøre??

/vind
Avatar billede vind Nybegynder
25. maj 2004 - 21:59 #8
Kan I mon se fejlen?? :)

/vind
Avatar billede sostack Nybegynder
26. maj 2004 - 07:01 #9
Prøv at lave en mailtest.php:
<?php
    $fra = "elevforeningen"; // kan være foreningens navn f.eks.
    $replyto = "test@test.dk";
    $emne = "mailtest";
    $teksten = "testmail fra mig til mig";
    $modtager = "din@egen.mail.dk";
mail($modtager, $emne, $teksten, "From: " . $fra . "\r\n" . "Reply-To: " . $framail . "\r\n");
?>

og se hvad den så siger??

//sostack
Avatar billede vind Nybegynder
26. maj 2004 - 10:21 #10
Det virker desværre heller ikke!
Kan det have noget med reply-to at gøre? For det er nemlig ikke strengt nødvendigt at have det med.??

/vind
Avatar billede sostack Nybegynder
26. maj 2004 - 13:25 #11
Prøv at rette:
mail($modtager, $emne, $teksten, "From: " . $fra . "\r\n" . "Reply-To: " . $framail . "\r\n");
til:
mail($modtager, $emne, $teksten . "From: " . $fra . "\r\n" . "Reply-To: " . $framail . "\r\n");

//sostack
Avatar billede vind Nybegynder
26. maj 2004 - 13:44 #12
Det hjalp desværre ikke.
Har prøvet med flere forskellige email adresser, men der kommer ingen mails frem. Der kommer dog heller ingen fejlmeddelelser, når man afprøver scriptet.

/vind
Avatar billede sostack Nybegynder
26. maj 2004 - 13:46 #13
Jeg tror ikke dit system er sat op til at sende mail via PHP!
Avatar billede vind Nybegynder
26. maj 2004 - 13:51 #14
Det virker meget mystisk hvis der er ikke er mulighed for at sende mails via php. Jeg er hostet hos b-one, men skriver lige til deres kundeservice!

Men mange tak for hjælpen indtil videre!!

/vind
Avatar billede mike_mike Nybegynder
26. maj 2004 - 17:12 #15
Jeg har et webhotel hos b-one og kan sende mails via PHP derfra uden problemer.... :)
Avatar billede vind Nybegynder
06. juni 2004 - 16:57 #16
Fandt en anden løsning, men sostack læg lige et svar, som tak for din tålmodighed og hjælpsomhed!! :)

/vind
Avatar billede vind Nybegynder
15. juni 2004 - 08:44 #17
Vil du ikke lægge et svar sostack??

/vind
Avatar billede sostack Nybegynder
28. juni 2004 - 07:26 #18
oki!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester