Beste scripters,
Ik ben bezig om elk persoon uit mijn db een email te sturen.
Helaas als ik dit doe.. blijft hij maar laden en laden.
Zou iemand misschien de fout aan willen geven?
Het gaat om een lijst van 10.000 mensen.. maar kan daarom hoeft hij nog niet 1 uur te laden.
Dit is het script:

<?PHP
$sql = mysql_query("SELECT * FROM `users`");

$mail = "www.QrimeQlub.nl daagt jou uit om de nieuwe Criminal game van deze tijd te spelen!
We zijn nog maar net begonnen, alles is net gereset en bijna alles is nu al af!
Twijfel niet neem nu nog een kijkje!";

if($_POST['stuur']){
print"GELUKT!!";
while($sturen = mysql_fetch_object($sql)){
mail($sturen->email,"QrimeQlub.nl Daagt ook jou uit!","$mail","From: QrimeQlub <[email protected]>\n");
}
}

print"<input type='submit' name='stuur' value='Verstuur Emails!'>";

?>

Alvast bedankt. (let niet op de manier hoe ik php hier schrijf)
Van dit laatste scriptje kloppen een aantal dingen niet. $row['email'] zal altijd een string zijn en geen array, dus implode() heeft daar weinig zin. Bovendien lijkt me dat je e-mail adressen uit de database wilt selecteren, dan lijkt het me niet handig om een WHERE clausule te gebruiken waarin je een e-mail adres specificeert.

Ook ontbreekt iedere controle of de query wel gelukt is, of hij resultaten opgeleverd heeft en of gebruikte variabelen wel bestaan.

Het lijkt me verstandig dat je de logica nog eens opnieuw uitdenkt en dit scriptje opnieuw probeert te maken.
Sorry, maar ook dan blijft dezelfde error..
Mocht ik dit weghalen lukt het wel:

<?php

$adressen = implode('; ' $row['email']);
$headers = "Bcc:".$adressen."\r\n";

?>

Maar dit is nou juist waar het om gaat!

En mocht ik het zo maken wil het ook:

<?PHP
// '; ' weggehaalt bij $adressen
$adressen = implode($row['email']);
$headers = "Bcc:".$adressen."\r\n";
?>
Maar dan kan je net zo goed Implode ook weghalen want dat doet dan niets... lees AUB de reactie van Blanche even door, die had even een paar goede opmerkingen :P
Je bent nu maar wat aan het goochelen in de hoop dat je het goede treft. Het lijkt mij slimmer dat je onder andere eens de handleding op php.net erbij pakt om te zien wat bepaalde functies doen. Dan begrijp je misschien waarom je ze zou kunnen gebruiken, wat je nu doet is zinloos.
Ik wil gewoon weten waar de fout zit.
het is er hier toch voor om te leren wat je fout doet:S
Enige wat jullie hier doen is afkraken, wat lekker veel zelfvertrouwen geeft.

Pff


EDIT

Het is me toch gelukt.. zag dat ik iets anders verkeerd had.
Volgens mij gaf ik in een eerdere post al aan waar fouten zaten, daar heb je volgens mij nog niets mee gedaan.

Maar waar het op neer komt is dat er 1 grote fout zit in dit scriptje: de logica klopt niet. Programmeren is veelal een kwestie van logisch denken, daar maak je nu een fout die zul je dus eerst op moeten lossen.

Jij wilt e-mail adressen uit de database halen om daar vervolgens allemaal dezelfde e-mail naar te verzenden? Dan zijn er twee mogelijke manieren: je verzendt allemaal losse e-mails of je verzend 1 e-mail met alle adressen in de BCC.

In het eerste geval is het een kwestie van een SELECT query uitvoeren en vervolgens in de loop waarin je de resultaten fetcht de mails te versturen:
<?php
$sql = "SELECT ... ";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result)) {
mail($row['email'], ...);
}
?>

In het tweede geval zul je dus een string moeten opbouwen die je als BCC header mee kunt geven:
<?php
$sql = "SELECT ... ";
$result = mysql_query($sql);

$bcc = 'BCC:';
while($row = mysql_fetch_assoc($result)) {
$bcc .= $row['email'].';';
}

// Verstuur mail
?>
Nu aan jou de taak om een van de twee methoden te kiezen en verder uit te werken. Dus controles en foutafhandeling toe te voegen, te testen of het werkt, te debuggen, etc...

ps. Zie nu dat het al gelukt is. Zorg dan voortaan dat je voldoende controles en goede foutafhandeling inbouwt, dan zie je veel sneller waar het fout gaat.
Nouja, ik komnu met een volgend probleem, heb nu al meerdere forums en sites bekeken over mail(), ik gebruik mail tevens ook om een vergeten wachtwoord op te vragen.. maar op een 1 of ander manier komt de mail niet.
Ik zie de fout niet.. heb verschillende manieren geprobeerd, er komt ook geen error.. de mail word gewoon niet verstuurd.
Hier de code:

<?PHP
$sql = mysql_query("SELECT * FROM `users` WHERE `email`='[email protected]' LIMIT 100");

$mail = "www.QrimeQlub.nl daagt jou uit om de nieuwe Criminal game van deze tijd te spelen!
We zijn nog maar net begonnen, alles is net gereset en bijna alles is nu al af!
Twijfel niet neem nu nog een kijkje!";

$onderwerp = "QrimeQlub.nl Daagt Ook Jou Uit!";

$bccc = 'BCC: ';
if($_POST['stuur']){
mysql_query("UPDATE `users` SET `email`='[email protected]' WHERE `email`='[email protected]'");
print"GELUKT!!";
$bccc = 'BCC: ';
while($row = mysql_fetch_object($sql))
{

$bcc .= $row->email.'';


mail($email_ontvanger, $onderwerp, $mail, $headers);


}

}

print"<input type='submit' name='stuur' value='Verstuur Emails!'>";

?>

Ziet iemand misschien de fout?

PS; Mocht ik BCC: erbij doen.. Helpt het nog niet.
En heb nu wel zitten kijken naar een oplossing, maar kon deze daarom ook echt niet vinden.
EDIT; Klikte op het verkeerde knopje! (SORRY)

Hij verstuurd de email niet, Heb echt overal gekeken.
Zou iemand misschien de fout willen vertellen:
Heb ook gelezen dat het aan de php hoster kan liggen.
Maar via wachtwoord vergeten.. doet hij het ook.



<?PHP
$sql = mysql_query("SELECT * FROM `users` WHERE `email`='[email protected]' LIMIT 100");

$mail = "www.QrimeQlub.nl daagt jou uit om de nieuwe Criminal game van deze tijd te spelen!
We zijn nog maar net begonnen, alles is net gereset en bijna alles is nu al af!
Twijfel niet neem nu nog een kijkje!";

$onderwerp = "QrimeQlub.nl Daagt Ook Jou Uit!";

$bccc = 'BCC: ';
if($_POST['stuur']){
mysql_query("UPDATE `users` SET `email`='[email protected]' WHERE `email`='[email protected]'");
print"GELUKT!!";
$bccc = 'BCC: ';
while($row = mysql_fetch_object($sql))
{

$bcc .= $row->email.'';


mail($bcc, $onderwerp, $mail, $headers);


}

}

print"<input type='submit' name='stuur' value='Verstuur Emails!'>";

?>

Ziet iemand misschien de fout?

PS; Mocht ik BCC: erbij doen.. Helpt het nog niet.
En heb nu wel zitten kijken naar een oplossing, maar kon deze daarom ook echt niet vinden.[/quote]
En werkt het nu?

Edit: blijkbaar niet.

Maarja, $bcc is dan ook geen geldig e-mail adres en kun je dus ook niet op de $to plaats in mail() gebruiken. Je haalt nu nog steeds twee methoden door elkaar, kies er 1 en werk die verder uit.
Ik heb gekozen voor de 2e methode die je me gaf.
Mocht ik die dan uitvoeren krijg ik het volgende: BCC: [email protected]; BCC: [email protected];!
Doe ik het zoals ik het typte, krijg ik normaal 1x BCC: [email protected]; [email protected];
Maar alsnog verstuurd hij geen mail.. terwijl dat wel zou moeten toch?

Of moet er wel: BCC: [email protected]; BCC: [email protected]; ?

In ieder geval bedankt voor je hulp.


Heb het ondertussen veranderd na jou manier precies.
Het is de volgende code:
<?PHP
$sql = mysql_query("SELECT * FROM `users` WHERE `email`='[email protected]' LIMIT 100");

$mail = "www.QrimeQlub.nl daagt jou uit om de nieuwe Criminal game van deze tijd te spelen!
We zijn nog maar net begonnen, alles is net gereset en bijna alles is nu al af!
Twijfel niet neem nu nog een kijkje!";

$onderwerp = "QrimeQlub.nl Daagt Ook Jou Uit!";

if($_POST['stuur']){
mysql_query("UPDATE `users` SET `email`='[email protected]' WHERE `email`='[email protected]'");
print"GELUKT!!";
$bcc = 'BCC: ';
while($row = mysql_fetch_assoc($sql))
{

$bcc .= $row['email'].'; ';


mail($bcc, $onderwerp, $mail, $headers);
print"$bcc";

}

}

print"<input type='submit' name='stuur' value='Verstuur Emails!'>";

?>

Ook hierbij verstuurd hij nog geen email.

Reageren