开发者

send email to multiple receptor php - mysqli

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


  1. Fetch the company names from the POST request
  2. Look it up in the database
  3. 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));
?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜