22. oktober 2005 - 12:20Der er
11 kommentarer og 1 løsning
PHP mail function i loop - kun første post får mailen
Jeg har følgende kode:
if ($_POST) { // Construct email body as a seperate variable, just so that its easier to read $subject = "Nyhedsbrev fra XXX"; $fromEmail = $_POST['fromEmail']; echo "From email: $fromEmail<BR>"; $message = $_POST['message']; //$headers = 'From: Testing <$fromEmail>' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $headers = "From: Butik-Kiweb Nyhedsbrev <" . $fromEmail . ">"; echo "headers: $headers<BR>";
//setup db connection $link = mysql_connect("localhost", "xxx", "xxx") or die("Could not connect : " . mysql_error()); mysql_select_db('xxx') or die('Could not select database');
$query = "SELECT email FROM users WHERE isActive = '1'"; $result = mysql_query($query) or die("Query failed");
Når jeg submitter formen printes samtlige email adresser på skærmen, men kun den første person får emailen. Jeg hoster hos b-one.net. Hvis jeg jeg hardcoded en email adresse i mail-funktionen og submitter formen x antal gange er det måske kun 1-2 af gangene jeg faktisk får emailen. Dvs. der er faktisk to issues her. Sidst nævnte mistænker jeg måske b-one for at stå for på en eller anden måde (måske de har policies for afsending af email fra deres servere jeg ikke kender til). Hvis de har kan det jo også skyldes at jeg netop kun kan sende til den første person og ikke alle i min db/array
og num_rows giver pt. 4 som er antallet i min db. Og 4 forskellige email adresser udskrives på siden også. Dvs den løber mit resultset igennem fint nok, men kun første person får emailen.
hmm.. heller ik løsningen :( men jeg kan måske godt se din tanke i at flytte den til jeg er helt færdig :) selvom resultset'et vel ikke ændres når db-forbindelsen lukkes.
if ($_POST) { // Construct email body as a seperate variable, just so that its easier to read $subject = "Nyhedsbrev fra XXX"; $fromEmail = $_POST['fromEmail']; echo "From email: $fromEmail<BR>"; $message = $_POST['message']; //$headers = 'From: Testing <$fromEmail>' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); $headers = "From: Butik-Kiweb Nyhedsbrev <" . $fromEmail . ">"; echo "headers: $headers<BR>";
//setup db connection $link = mysql_connect("localhost", "xxx", "xxx") or die("Could not connect : " . mysql_error()); mysql_select_db('xxx') or die('Could not select database');
$query = "SELECT email FROM users WHERE isActive = '1'"; $result = mysql_query($query) or die("Query failed");
Mht at lukke databasen før endt brug, så må logikken være, at ikke hele indholdet bliver trukket ud på een gang. Så er det et stort udtræk, vil der løbende hentet data ind
ok - har nu: while ($row = mysql_fetch_array($result)){ $toEmail = $row['email']; mail($toEmail, $subject, $message, $headers ); sleep(1); echo "Email now sent to: $toEmail <br>"; }
uden det hjælper. Prøvede for frustrationen og 'sjovs' skyld dette her:
while ($row = mysql_fetch_array($result)){ $toEmail = $row['email']; if ($toEmail == "myemail") { mail($toEmail, $subject, $message, $headers ); sleep(1); echo "Email now sent to: $toEmail <br>"; } else{ echo "Email not sent to : $toEmail <br>"; }
myemail findes i db'en - ifølge log outputtet er det den eneste der sendes til og det er også den eneste person som modtager emailen...
Arrayet løbes stensikkert fint igennem, dvs. det må være enten (1) i mail funktionen eller (2) hos b-one.net at problemet ligger vil jeg mene.
Ok - der fik jeg vist løst problemet selv... den from email der angives i @headers SKAL være oprettet på min b-one konto under mail settings... tak for Jeres input
Synes godt om
Ny brugerNybegynder
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.