login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nieuwbrief

Offline BigBug - 08/05/2006 12:22
Avatar van BigBugPHP expert Haa beste sitemastertjes 

Ik heb jullie hulp nodig.
Ik ben een nieuwsbrief aan het maken, en alle emailadressen staan in een MySQL table genaamt nieuwbrief (was de 's' vergeten, dusja boeie ) onder de naam 'email' Nu kan je op een pagina de nieuwsbrief typen, en als je op submit klikt, moet de nieuwsbrief naar alle emailadressen in de database verzonden worden.

Ik heb alleen geen flauw idee hoe ik dit moet aanpakken. Kan iemand ff een klein voorbeeldje typen? Alvast bedankt!

Jeroen

21 antwoorden

Gesponsorde links
Offline Rens - 08/05/2006 12:23 (laatste wijziging 08/05/2006 12:24)
Avatar van Rens Gouden medaille

Crew algemeen
Een while loop om door je leden te lopen, email adres in de header zetten achter Bcc.
Je kunt ook while loop om door je leden te lopen en dan de mail functie elke keer uitvoeren.
Denk alleen wel dat dat je server overbelast, en als je om de x seconden een mail verstuurd duurt het erg lang.
Denk dat de Bcc header het beste is.

http://www.site...44#headers
Offline Gerard - 08/05/2006 12:26 (laatste wijziging 08/05/2006 12:26)
Avatar van Gerard Ouwe rakker
  1. <?php
  2. $qSelectMembers = mysql_query("SELECT email
  3. FROM user");
  4.  
  5. while ($aMember = mysql_fetch_assoc($qSelectMembers))
  6. {
  7. mail($aMember['email'], $aNieuwsbrief['titel'], $aNieuwsbrief['bericht'], $sHeaders);
  8. }
  9. ?>


Houdt er wel rekening mee dat bovenstaande code erg zwaar is wanneer er veel leden aanwezig zijn in de database.

Het beste is dan om te doen wat Rensjuh hierboven voorstelt.
Offline BigBug - 08/05/2006 12:27 (laatste wijziging 08/05/2006 12:33)
Avatar van BigBug PHP expert Eens kijken Vond ook net een stukje op wmcity.nl:

  1. <?php
  2.  
  3. // dit stuk
  4. while($result = mysql_fetch_object($query)) {
  5. mail($result->emailadres, $onderwerp, $bericht, "FROM: " . $admin_naam <$admin_email>);
  6. }
  7.  
  8. ?>


Maar dat is de manier die jij afraad. Ik ga nu eten endaarna ga ik de Bcc header proberen Want zat er ook zelf al aan te denken dat dat knetterlang gaat duren 

Edit: Ik zit nu net te kijken naar dat BCC, maar snap er niet veel van eerlijkgezegd, want de mailfunctie stelt dit voor

mail(mailadres, ow, bericht, headers -> bcc -> hier emailadres)

Als je elke eer achter de bcc het mailadres zet (terwijl je em door een loop heen haalt) wat moet je doen dan bij waar je normaal het emailadres in vult?
Offline Rens - 08/05/2006 12:33
Avatar van Rens Gouden medaille

Crew algemeen
Dat stukje is nog verkeerd ook nog.
  1. "FROM: " . $admin_naam <$admin_email>

Zal niet gaan werken hè... 
Offline BigBug - 08/05/2006 12:34 (laatste wijziging 08/05/2006 12:34)
Avatar van BigBug PHP expert Tja, het is niet mijn script 

Edit: Lees mn edit hierboven 
Offline Thomas - 08/05/2006 12:40
Avatar van Thomas Moderator Maak een cron die er max. 50 tot 100 per 15 mins verstuurd o.i.d..
Offline BigBug - 08/05/2006 12:43 (laatste wijziging 08/05/2006 12:44)
Avatar van BigBug PHP expert Tja, maar toch lijkt me het idee van de Bcc makkelijker.. Tevens weet ik niet of degene voor wie ik het maak beschikt over cronjobs.

Edit: Daar komt nog bij, dat als je een niet snelle server hebt, en hij zit bij de 15 min op 44/50 -> en begint dan van 50 t/m 100 dan mis je er 6, oftewel, 6 leden krijgen hun nieuwsbrief niet.
Offline Thomas - 08/05/2006 12:52
Avatar van Thomas Moderator Dat zijn dan of ontiegelijk grote mailtjes (attachments?) of je moet eens uit gaan zien naar een minder brakke webserver .
Offline BigBug - 08/05/2006 13:00 (laatste wijziging 08/05/2006 13:35)
Avatar van BigBug PHP expert Het was een voorbeeld FangorN, ik heb zelf een snel zatte server, maar ik weet niet wat de specificaties zijn van de server van degene waarvoor ik het maak. Ook ben ik niet zo voor het idee zelf. Ik wil gewoon weten hoe het met die Bcc moet 
Offline Rens - 08/05/2006 13:41
Avatar van Rens Gouden medaille

Crew algemeen
http://www.site...44#headers
  1. <?PHP
  2. $sQuery = "SELECT ... ";
  3. if(!$rResult = MySQL_Query($sQuery))
  4. {
  5. echo MySQL_Error()." on line ".__LINE__;
  6. } else
  7. {
  8. while($aFetch = MySQL_Fetch_Assoc($rResult))
  9. {
  10. $headers .= "Bcc: birthdaycheck@example.com\r\n";
  11. }
  12. if(mail("email", "onderwerp", "bericht", $headers))
  13. {
  14. echo "Ok!";
  15. } else
  16. {
  17. echo "Niet verstuurd!";
  18. }
  19. }
  20. ?>
Offline BigBug - 08/05/2006 13:44 (laatste wijziging 08/05/2006 14:44)
Avatar van BigBug PHP expert In die header moet het email-adres komen ja...

En dat moet door de while loop...

Dat weet ik ook...

Maar wat moet er nu in jouw reactie bij email (in de mail() functie) komen te staan? (heb ik al eerder gevraagd) Dit idee hierboven snap ik, maar niet wat er daar moet...

Edit:Ik denk dat ik het wel enigsinds begrijp... Ik heb nu dit:

  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if($qQuery = mysql_query("SELECT email FROM nieuwbrief"))
  5. {
  6. while($aAlles = mysql_fetch_array($qQuery))
  7. {
  8. $header = "".$aAlles['email']."\r\n";
  9. mail("@", "".$_POST['onderwerp']."", "".$_POST['bericht']."", $header);
  10. }
  11. }
  12. else
  13. {
  14. echo "Er ging iets fout! ".mysql_error()."";
  15. }
  16. }
  17. ?>
Maar hij doet niks / of ik krijg niks binnen en een ander ook niet.. getest op hotmail en een @home.nl adres...

Edit 2: Lama hange, was Bcc: vergeten 
Offline Ibrahim - 08/05/2006 15:31 (laatste wijziging 08/05/2006 16:56)
Avatar van Ibrahim PHP expert eeh je zet mail() in je while loop. iets wat was afgeraden en jij ook niet wilde 

edit:

en dit stukje:

  1. <?php
  2. echo "Er ging iets fout! ".mysql_error()."";
  3. ?>


moet dit worden:

  1. <?php
  2. echo "Er ging iets fout! ".mysql_error(); ## "" hoeft er niet bij :s
  3. ?>
Offline Rens - 08/05/2006 15:41
Avatar van Rens Gouden medaille

Crew algemeen
Zo moet het dan Buggie:
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if($qQuery = mysql_query("SELECT email FROM nieuwbrief"))
  5. {
  6. while($aAlles = mysql_fetch_array($qQuery))
  7. {
  8. $header .= "Bcc: ".$aAlles['email']."\r\n";
  9. }
  10. mail("@", "".$_POST['onderwerp']."", "".$_POST['bericht']."", $header);
  11. }
  12. else
  13. {
  14. echo "Er ging iets fout! ".mysql_error()."";
  15. }
  16. }
  17. ?>
Offline Maarten - 08/05/2006 17:15
Avatar van Maarten Erelid Je kan ook de header als volgt opstellen als ik mij niet vergis:
Bcc: prut@nomail.com; spammij@maildoos.be; wtf@nokidding.net

Dat spaart nog wat tekens 
Offline BigBug - 08/05/2006 19:51 (laatste wijziging 08/05/2006 19:56)
Avatar van BigBug PHP expert 3 Reacties onzin Er staat al dat het opgelost was,.. Alles staat nu in een while loop en hij pleurt elke keer een nieuw emailadres in de bcc 

Edit: Kijk nu naar rensjuhs ding... Deed het dus tog verkeerd 

Citaat:
Rensjuh edit:
En maar denken dat je altijd alles kunt he^^
Trouwens, die reacties zijn niet alleen voor jou, maar ook voor de rest.
Dus misschien was het voor jou nutteloos, maar voor een ander kan het weleens nuttig zijn he;-)
Offline Ibrahim - 08/05/2006 19:55
Avatar van Ibrahim PHP expert
Citaat:
Je kan ook de header als volgt opstellen als ik mij niet vergis:
Bcc: prut@nomail.com; spammij@maildoos.be; wtf@nokidding.net

Dat spaart nog wat tekens


dit vind ik geen onzin reactie bigbug

en die van mij (lekker bescheiden) is ook niet echt onzin net als die van rensjuh
Offline BigBug - 08/05/2006 20:02
Avatar van BigBug PHP expert
Citaat:
Rensjuh edit:
En maar denken dat je altijd alles kunt he 
Nope, jij denkt het wel:
Citaat:
Zo moet het dan Buggie:
Maar dit werkt niet:
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if($qQuery = mysql_query("SELECT email FROM nieuwbrief"))
  5. {
  6. while($aAlles = mysql_fetch_array($qQuery))
  7. {
  8. $header .= "Bcc: ".$aAlles['email']."\r\n";
  9. }
  10. mail("@", "".$_POST['onderwerp']."", "".$_POST['bericht']."", $header);
  11. }
  12. else
  13. {
  14. echo "Er ging iets fout! ".mysql_error()."";
  15. }
  16. }
  17. ?>


En dit: (wat het uiteindelijk moet worden)
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST')
  3. {
  4. if($qQuery = mysql_query("SELECT email FROM nieuwbrief"))
  5. {
  6. while($aAlles = mysql_fetch_array($qQuery))
  7. {
  8. $header .= "Bcc: ".$aAlles['email']."\r\n";
  9. $header .= "From: ".$vNaam." <'noreply@downloadstad.nl'>\r\n";
  10. }
  11. mail("@", "".$_POST['onderwerp']."", "".$_POST['bericht']."", $header);
  12. }
  13. else
  14. {
  15. echo "Er ging iets fout! ".mysql_error()."";
  16. }
  17. }
  18. ?>
dus ook niet 
Offline Rens - 08/05/2006 20:05
Avatar van Rens Gouden medaille

Crew algemeen
  1. while($aAlles = mysql_fetch_array($qQuery))
  2. {
  3. $header .= "Bcc: ".$aAlles['email']."\r\n";
  4. $header .= "From: ".$vNaam." <'noreply@downloadstad.nl'>\r\n";
  5. }


Die 2e header hoort daar niet te staan hè...
Anders krijg je bij elke Bcc die je toevoegt, ook een from header erbij.
Als je die nou eens buiten je while loop zet:
  1. while($aAlles = mysql_fetch_array($qQuery))
  2. {
  3. $header .= "Bcc: ".$aAlles['email']."\r\n";
  4. }
  5. $header .= "From: ".$vNaam." <'noreply@downloadstad.nl'>\r\n";
Offline BigBug - 08/05/2006 20:06
Avatar van BigBug PHP expert Ik zal het proberen, maar dan is die loop weer hetzelfde als eerst. - Wat niet werkte
Offline Rens - 08/05/2006 20:07
Avatar van Rens Gouden medaille

Crew algemeen
En als je bij de eerste @ nou eens een normaal email adres invult?
Zet ook eens een check bij je mail functie:
  1. if(!mail())
  2. {
  3. echo "fout";
  4. } else
  5. {
  6. echo "goed";
  7. }
Offline BigBug - 08/05/2006 20:08 (laatste wijziging 08/05/2006 20:09)
Avatar van BigBug PHP expert Het werkt nu hoor!! Danku 

Citaat:
Rensjuh edit:
Zeg ook even wat er fout ging:?: 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.348s