Hi DP, I have a php site that sends out an email based on a form that collects the users name/email/country. I'm trying to make the email be able to use the customized emails (which I understand uses some seach/replace fields). It is actually working for an email that comes from another php page on my site, but not this one. Who can fix it and at what price? Terry
change line 22 to this $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); PHP: and change line 47, to this: $contestant_email_msg_edit = preg_replace($varsearch,$varreplace,$contestant_email_msg); PHP:
<?php require('connect.php'); $config = file_get_contents("config.txt"); $variables = explode(";",$config); $numberWinners = $variables[0]; $winnerMessage = $variables[1]; $contestEmail = $variables[2]; $adminEmail = $variables[3]; $siteName = $variables[4]; $siteURL = $variables[5]; $contestantMessage = $variables[6]; $contestMsgSubject =$variables[7]; $winnerMsgSubject = $variables[8]; $signupMsgSubject = $variables[9]; $signupMsg = $variables[10]; $header = "FROM: Lawterry of Attraction"; $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners"); while($r = mysql_fetch_assoc($sql)){ $winning_email = $r['email']; $winning_id = $r['id']; $winning_country = $r ['country']; $winning_name = $r['name']; mail($winning_email,$winnerMsgSubject,$winnerMessage,$header); } $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); mail($adminEmail,"Hi David, The contest on ".$website_name." has ended for another week."," The Universe has chosen ".$winning_name." from ".$winning_country." ( ".$winning_email." ) to receive this weeks prize. ".$winning_name." will receive details on how to claim their prize, and will likely contact you shortly! Thank you for helping others with your vision!",$header); $sql = mysql_query("SELECT * FROM contestant"); while($r = mysql_fetch_assoc($sql)){ $email = $r['email']; $name = $r['name']; $id = $r['id']; $contestant_email_msg_edit = preg_replace($varsearch,$varreplace,$contestant_email_msg); mail($email,$contestMsgSubject,$contestantMessage,$header); if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){ if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){ if(mysql_query("DELETE FROM contestant WHERE id='$id'")){ }else{ mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header); } } }else{ mysql_query("DELETE FROM contestant WHERE id='$id'"); } } ?> PHP:
though this may not work for you because in the code you pasted, you simply define $contestant_email_msg_edit. you dont use it anywhere. unless of course there is code lower down the line that you haven't pasted.
Good find, but not working. Although your changes showed me a few more mistakes I found. Here is the new code, still not working.... what else can you see?
guess you've changed it to $contestantMessage_edit so change it to this mail($email,$contestMsgSubject,$contestantMessage_edit,$header); PHP:
change this $contestantMessage = preg_rep lace($varsearch,$varreplace,$contestantMessage); mail($email,$contestMsgSubject,$contestantMessage,$header); PHP: to this $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage); mail($email,$contestMsgSubject,$contestantMessage,$header); PHP: you had a space in replace
Ok that got me on the right track. That is working for the email as outlined in red, but not the others. What do i need to add for the others (in green) P.S!!!!! I would like to be able to use the $winning_name and $winning_country fields in the "mail($email,$contestMsgSubject,$contestantMessage,$header)" as well, which doesn't seem to be working...
oh crap. i got caught up in something. sorry. <?php require('connect.php'); $config = file_get_contents("config.txt"); $variables = explode(";",$config); $numberWinners = $variables[0]; $winnerMessage = $variables[1]; $contestEmail = $variables[2]; $adminEmail = $variables[3]; $siteName = $variables[4]; $siteURL = $variables[5]; $contestantMessage = $variables[6]; $contestMsgSubject =$variables[7]; $winnerMsgSubject = $variables[8]; $signupMsgSubject = $variables[9]; $signupMsg = $variables[10]; $adminmsg = $variables[11]; $alertsub = $variables[12]; $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $header = "FROM: Lawterry of Attraction"; $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners"); while($r = mysql_fetch_assoc($sql)){ $winning_email = $r['email']; $winning_id = $r['id']; $winning_country = $r ['country']; $winning_name = $r['name']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage); $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject); mail($winning_email,$winnerMsgSubject,$winnerMessage,$header); } $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $admintmsg = preg_replace($varsearch,$varreplace,$adminmsg); $alertsub = preg_replace($varsearch,$varreplace,$alertsub); mail($adminEmail,$alertsub,$adminmsg,$header); $sql = mysql_query("SELECT * FROM contestant"); while($r = mysql_fetch_assoc($sql)){ $email = $r['email']; $name = $r['name']; $id = $r['id']; $country = $r['country']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage); $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject); mail($email,$contestMsgSubject,$contestantMessage,$header); if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){ if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){ if(mysql_query("DELETE FROM contestant WHERE id='$id'")){ }else{ mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header); } } }else{ mysql_query("DELETE FROM contestant WHERE id='$id'"); } } ?> PHP: try that and let me know. should work fine now. we replace all the messages and subjects before the emails are sent.
try this. i misspelt adminmsg. had a 't' in there. though that would only effect the admin email. did you see the winner email? <?php require('connect.php'); $config = file_get_contents("config.txt"); $variables = explode(";",$config); $numberWinners = $variables[0]; $winnerMessage = $variables[1]; $contestEmail = $variables[2]; $adminEmail = $variables[3]; $siteName = $variables[4]; $siteURL = $variables[5]; $contestantMessage = $variables[6]; $contestMsgSubject =$variables[7]; $winnerMsgSubject = $variables[8]; $signupMsgSubject = $variables[9]; $signupMsg = $variables[10]; $adminmsg = $variables[11]; $alertsub = $variables[12]; $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $header = "FROM: Lawterry of Attraction"; $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners"); while($r = mysql_fetch_assoc($sql)){ $winning_email = $r['email']; $winning_id = $r['id']; $winning_country = $r ['country']; $winning_name = $r['name']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage); $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject); mail($winning_email,$winnerMsgSubject,$winnerMessage,$header); } $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg); $alertsub = preg_replace($varsearch,$varreplace,$alertsub); mail($adminEmail,$alertsub,$adminmsg,$header); $sql = mysql_query("SELECT * FROM contestant"); while($r = mysql_fetch_assoc($sql)){ $email = $r['email']; $name = $r['name']; $id = $r['id']; $country = $r['country']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage); $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject); mail($email,$contestMsgSubject,$contestantMessage,$header); if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){ if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){ if(mysql_query("DELETE FROM contestant WHERE id='$id'")){ }else{ mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header); } } }else{ mysql_query("DELETE FROM contestant WHERE id='$id'"); } } ?> PHP: if that doesn't work, let's try it with the pattern in each. i dunno why that wouldn't work. it should still be in the global scope while it's inside of a loop. it's not inside of a function or anything. <?php require('connect.php'); $config = file_get_contents("config.txt"); $variables = explode(";",$config); $numberWinners = $variables[0]; $winnerMessage = $variables[1]; $contestEmail = $variables[2]; $adminEmail = $variables[3]; $siteName = $variables[4]; $siteURL = $variables[5]; $contestantMessage = $variables[6]; $contestMsgSubject =$variables[7]; $winnerMsgSubject = $variables[8]; $signupMsgSubject = $variables[9]; $signupMsg = $variables[10]; $adminmsg = $variables[11]; $alertsub = $variables[12]; $header = "FROM: Lawterry of Attraction"; $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners"); while($r = mysql_fetch_assoc($sql)){ $winning_email = $r['email']; $winning_id = $r['id']; $winning_country = $r ['country']; $winning_name = $r['name']; $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage); $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject); mail($winning_email,$winnerMsgSubject,$winnerMessage,$header); } $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg); $alertsub = preg_replace($varsearch,$varreplace,$alertsub); mail($adminEmail,$alertsub,$adminmsg,$header); $sql = mysql_query("SELECT * FROM contestant"); while($r = mysql_fetch_assoc($sql)){ $email = $r['email']; $name = $r['name']; $id = $r['id']; $country = $r['country']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage); $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject); mail($email,$contestMsgSubject,$contestantMessage,$header); if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){ if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){ if(mysql_query("DELETE FROM contestant WHERE id='$id'")){ }else{ mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header); } } }else{ mysql_query("DELETE FROM contestant WHERE id='$id'"); } } ?> PHP:
neither of those help either the admin or the winner email unfortunately. if it provides a hint - the fields ( {name}, etc.) are now invisible in both emails, whereas before they showed up in the body/subj.
<?php require('connect.php'); $config = file_get_contents("config.txt"); $variables = explode(";",$config); $numberWinners = $variables[0]; $winnerMessage = $variables[1]; $contestEmail = $variables[2]; $adminEmail = $variables[3]; $siteName = $variables[4]; $siteURL = $variables[5]; $contestantMessage = $variables[6]; $contestMsgSubject =$variables[7]; $winnerMsgSubject = $variables[8]; $signupMsgSubject = $variables[9]; $signupMsg = $variables[10]; $adminmsg = $variables[11]; $alertsub = $variables[12]; $header = "FROM: Lawterry of Attraction"; $sql = mysql_query("SELECT * FROM contestant ORDER BY RAND() LIMIT $numberWinners"); while($r = mysql_fetch_assoc($sql)){ $winning_email = $r['email']; $winning_id = $r['id']; $winning_country = $r ['country']; $winning_name = $r['name']; $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $winnerMessage = preg_replace($varsearch,$varreplace,$winnerMessage); $winnerMsgSubject = preg_replace($varsearch,$varreplace,$winnerMsgSubject); mail($winning_email,$winnerMsgSubject,$winnerMessage,$header); } $varsearch = array("/\{name\}/i","/\{country\}/i","/\{email\}/i","/\{winnername\}/i","/\{winneremail\}/i","/\{winnercountry\}/i"); $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $adminmsg = preg_replace($varsearch,$varreplace,$adminmsg); $alertsub = preg_replace($varsearch,$varreplace,$alertsub); mail($adminEmail,$alertsub,$adminmsg,$header); $sql = mysql_query("SELECT * FROM contestant"); while($r = mysql_fetch_assoc($sql)){ $email = $r['email']; $name = $r['name']; $id = $r['id']; $country = $r['country']; $varreplace = array($name,$country,$email,$winning_name,$winning_email,$winning_country); $contestantMessage = preg_replace($varsearch,$varreplace,$contestantMessage); $contestMsgSubject = preg_replace($varsearch,$varreplace,$contestMsgSubject); mail($email,$contestMsgSubject,$contestantMessage,$header); if(mysql_num_rows(mysql_query("SELECT * FROM email WHERE email='$email'"))==NULL){ if(mysql_query("INSERT INTO email SET email='$emailAddr',ip='$ip',name='$name',country='$country'")){ if(mysql_query("DELETE FROM contestant WHERE id='$id'")){ }else{ mail($admin_email,"Email Address could not be deleted.","There was a problem deleting $email from the contestant database.",$header); } } }else{ mysql_query("DELETE FROM contestant WHERE id='$id'"); } } ?> PHP:
put this at the very top after the opening php tag.. error_reporting(E_ALL); PHP: i think what it is, is that we dont have all of the info for the replace. ie: where is $name coming from for the replacement? i dont see that anywhere.