I'd like to know how to send mails to users who is already stored in my database so I want to select all from my database table and send them a mail and also is I want to send to the selected emails only how that can be done
This is the relevant code of the admin interface:
<?php
$get_U_data = " select * from maling_list ";
$result = $db -> query ($get_U_data) or die ($db->error);
if ($result) {
?>
<h2>Send your newsletter</h2>
<form action="mailit.php" method="post" >
Category:
<select name="category">
<option value="1">option1</option>
<option value="2">option2</option>
<option value="3">option3<开发者_JAVA百科;/option>
<option value="4">option4</option>
</select>
<select name="select" size="15" multiple="multiple" id="select">
<option>--------------</option>
<?php
while ($row = $result -> fetch_object()) {
?>
<option><?php echo $row->company ?><br /></option>
<?php
}
}
?>
<option>--------------</option>
</select><br />
Subject: <input type="text" name="subject" /><br />
Message<: <textarea name="body" cols="60" rows="15"></textarea><br>
<input type="submit" name="submit" value="Send" />
</form>
please I need help on this
this is my new code
<?php
include_once("../admin_config/config.php");
$getMails = " select * from maling_list where received = 0 limit 20 ";
$result = $db->query($getMails) or die($db->error);
$dbfailures = array();
$failures = array();
$success = array();
while ($row = $result->fetch_array()) {
$email = $row['email'];
$name = $row['company'];
$subject = $_POST['subject'];
$cat = $_POST['category'];
$mailbody = $_POST['body'];
$headers = "From : add@egindex.com\r\n";
$to = "$email";
$mailResult = mail($to, $subject, $mailbody, $cat, $headers);
if ($mailResult) {
$updataData = " UPDATE mailing_list SET received = '1' where email = '" . $db->real_escape_string($email) . "' LIMIT 1";
$resultUpdate = $db->query($updataData) or die($db->error);
if ($resultUpdate) {
$success[] = $email;
} else {
$dbfailures[] = $email;
}
} else {
$failures[] = $email;
}
}
echo "These mails didn't get sent: " . htmlentities(implode(', ', $failures)) . "<br />" . "These mails didn't get updated in db: " . htmlentities(implode(', ', $dbfailures)) . "<br />" . "These mails were successfully sent: " . htmlentities(implode(', ', $success));
?>
you may want to have a look at this - http://www.php.net/manual/en/function.mail.php#85476
<?php
$mailbody = "";
$subject = "Egindex newsletter";
$headers.= "From : Newsletter@egindex.com\r\n";
$headers.= "Content-type: text/html\r\n";
$to = '';
$headers.="Bcc: ";
while ($row = $result->fetch_array()) {
$headers.=$row['email'].", ";
}
$headers.="admin@mailinglist.com\r\n";
$mailResult = mail($to, $subject, $mailbody, $headers);
?>
run the mail function in a loop
- Fetch the company names from the POST request
- Look it up in the database
- Iterate through all e-mail addresses and send a mail.
Example code:
$subject = filter_input(INPUT_POST, 'subject');
$message = filter_input(INPUT_POST, 'message');
$escaped_names = array();
foreach($_POST['select'] as $email){
$escaped_names[] = mysql_real_escape_string((string)$email);
}
$sql = "SELECT email FROM mailing_list WHERE company IN ('" . implode("','", $escaped_names) . "')";
$query = mysql_query($sql);
if($query && mysql_num_rows($query)){
while($row=mysql_fetch_array($query)){
mail($row['email'], $subject, $message);
}
}
<?php
include_once("../admin_config/config.php");
$getMails = " select * from maling_list where received = 0 limit 20 ";
$result = $db->query($getMails) or die($db->error);
$subject = $_POST['subject'];
$cat = $_POST['category'];/* what is this for? Consider adding it to $mailbody */
$mailbody = $_POST['body'];
$headers = "From : add@egindex.com\r\n";
$headers .= "Content-type: text/html\r\n";
// added the following
$dbfailures = array();
$failures = array();
$success = array();
while ($row = $result->fetch_array()) {
$email = $row['email'];
$name = $row['company'];
$to = "$email";
$mailResult = mail($to, $subject, $mailbody, $headers);
if ($mailResult) {// if the mail is successfully sent
$updataData = " UPDATE mailing_list SET received = '1' where email = '" . $db->real_escape_string($email) . "' LIMIT 1";
$resultUpdate = $db->query($updataData) or die($db->error);
if ($resultUpdate) {
$success[] = $email;
} else {
// you could exit the script after 5 database failures
$dbfailures[] = $email;
}
}
else{
// these mails don't get sent
$failures[] = $email;
}
}
echo "These mails didn't get sent: ".htmlentities(implode(', ', $failures))."<br />".
"These mails didn't get updated in db: ".htmlentities(implode(', ', $dbfailures))."<br />".
"These mails were successfully sent: "htmlentities(implode(', ', $success));
?>
精彩评论