SitePoint Sponsor

User Tag List

Results 1 to 4 of 4

Hybrid View

  1. #1
    SitePoint Member
    Join Date
    Jun 2011
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    php sending email to multiple email address using check box

    Hello,
    i am not good at php so need some help.I have a php page with check box from where i am trying to send mail to multiple recipient. i can send mail but with little problem. when i select eg. 3 check box to send email then 1st email recipient is ok but 2nd email goes with 1st and 2nd recipient and 3rd email goes 1st,2nd,3rd recipient. i guess having problem with 'foreach'. will someone pls help me to send individual email to individual recipient with my MySQL query's.

    Here is my code for mail.php page


    Code:
    <?php
    	require_once('auth.php');
    ?>
    
        <html>
        <head>
        <title>PHPMailer - SMTP basic test with authentication</title>
        </head>
        <body>
         
        <?php
    	include("Connections/connection.php");
        //error_reporting(E_ALL);
        error_reporting(E_STRICT);
         
        date_default_timezone_set('Europe/Dublin');
         
        require_once('php_mailer/class.phpmailer.php');
        //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
         
        $mail = new PHPMailer();
         
         
        //$body = file_get_contents('contents.php');
        //$body = eregi_replace("[\]",'',$body);
    
    $sender_name		=	$_SESSION['sender_name'];
    $sender_email		=	$_SESSION['sender_email'];
    $sender_password	=	$_SESSION['sender_password'];
    
     
    $id_user	=	$_POST["id_user"];
    
    foreach ($id_tariff as $idt)
    {
    	$query = sprintf("SELECT From_Date, To_Date, first, last, city, country, Email_1, Email_2, account_name FROM user_info where id_user = $id_user");
    	$result = mysql_query($query) or die(mysql_error());
    
    	
    $body = "
    <table width='100%' border='1' cellspacing='0' cellpadding='3' bordercolor='#ffcccc'>
    <tr>
    <th bgcolor='#cc3333'>From</th>
    <th bgcolor='#cc3333'>To</th>
    <th bgcolor='#cc3333'>First Name</th>
    <th bgcolor='#cc3333'>Last Name</th>
    <th bgcolor='#cc3333'>City</th>
    <th bgcolor='#cc3333'>country</th>
    </tr>
    
    ";
      
     while($row = mysql_fetch_array($result)){
      $body .="<tr>";
      $body .="<td>".$row['From_Date']."</td>";
      $body .="<td bgcolor='#FFE8E8'>".$row['To_Date']."</td>";
      $body .="<td>".$row['first']."</td>";
      $body .="<td bgcolor='#FFE8E8'>".$row['last']."</td>";
      $body .="<td>".$row['city']."</td>";
      $body .="<td bgcolor='#FFE8E8'>".$row['country']."</td>";
      $body .="</tr>";
      $to1 = $row['Email_1'];
      $to2 = $row['Email_2'];
      $account_name = $row['account_name'];
     }
      $body .="</table>";
    
    
        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->Host = "smtp.gmail.com"; // SMTP server
        $mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
        $mail->SMTPAuth = true; // enable SMTP authentication
    	$mail->SMTPSecure = "ssl";
        $mail->Host = "smtp.gmail.com"; // sets the SMTP server
        $mail->Port = 465; // set the SMTP port for the GMAIL server
        $mail->Username = "$sender_email"; // SMTP account username
        $mail->Password = "$sender_password"; // SMTP account password
         
    
    	$mail->SetFrom($sender_email,$sender_name);
         
        $mail->AddReplyTo("$sender_email","$sender_name");
    
         
        $mail->Subject = "Hello Dear $account_name";
         
    
        $mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
         
        $mail->MsgHTML($body);
    	
         
    
        $mail->AddAddress($to1,$account_name);
    
        $mail->AddAddress($to2,$account_name);
         
    
    
    
        if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
        } else {
        echo "YOUR E-MAIL HAS SENT";
    
    	}
    
     
    }
    ?>
         
        </body>
        </html>
    Thanks in Advance

  2. #2
    SitePoint Enthusiast
    Join Date
    Nov 2011
    Location
    Florida
    Posts
    58
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Im not familiar with the class you are using but i do see one "potential" issue.

    you are calling
    $mail = new PHPMailer();

    before the foreach statement which isn't a "critical" thing until you look at

    $mail->AddAddress($to1,$account_name);
    $mail->AddAddress($to2,$account_name);

    which makes me think it is storing an array off addresses inside the class, and with out creating a "new" instance of the class each time you are storing a "new" email address to the current mail class objects array instead of creating a "new" object array


    if that makes any sense, try the code below



    PHP Code:
    <?php
        
    require_once('auth.php');
    ?>

    <html>
      <head>
        <title>PHPMailer - SMTP basic test with authentication</title>
      </head>
      <body>
        <?php
        
    include("Connections/connection.php");
        
    //error_reporting(E_ALL);
        
    error_reporting(E_STRICT);
         
        
    date_default_timezone_set('Europe/Dublin');
         
        require_once(
    'php_mailer/class.phpmailer.php');
        
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 
        //$body = file_get_contents('contents.php');
        //$body = eregi_replace("[\]",'',$body);

        
    $sender_name        =    $_SESSION['sender_name'];
        
    $sender_email        =    $_SESSION['sender_email'];
        
    $sender_password    =    $_SESSION['sender_password'];
        
         
        
    $id_user    =    $_POST["id_user"];
        
        foreach (
    $id_tariff as $idt)
        {
            
    $query sprintf("SELECT From_Date, To_Date, first, last, city, country, Email_1, Email_2, account_name FROM user_info where id_user = $id_user");
            
    $result mysql_query($query) or die(mysql_error());

        
    $body "
        <table width='100%' border='1' cellspacing='0' cellpadding='3' bordercolor='#ffcccc'>
        <tr>
        <th bgcolor='#cc3333'>From</th>
        <th bgcolor='#cc3333'>To</th>
        <th bgcolor='#cc3333'>First Name</th>
        <th bgcolor='#cc3333'>Last Name</th>
        <th bgcolor='#cc3333'>City</th>
        <th bgcolor='#cc3333'>country</th>
        </tr>
        
        "
    ;
          
         while(
    $row mysql_fetch_array($result)){
          
    $body .="<tr>";
          
    $body .="<td>".$row['From_Date']."</td>";
          
    $body .="<td bgcolor='#FFE8E8'>".$row['To_Date']."</td>";
          
    $body .="<td>".$row['first']."</td>";
          
    $body .="<td bgcolor='#FFE8E8'>".$row['last']."</td>";
          
    $body .="<td>".$row['city']."</td>";
          
    $body .="<td bgcolor='#FFE8E8'>".$row['country']."</td>";
          
    $body .="</tr>";
          
    $to1 $row['Email_1'];
          
    $to2 $row['Email_2'];
          
    $account_name $row['account_name'];
         }
          
    $body .="</table>";
        
            
    $mail = new PHPMailer();
            
    $mail->IsSMTP(); // telling the class to use SMTP
            
    $mail->Host "smtp.gmail.com"// SMTP server
            
    $mail->SMTPDebug 1// enables SMTP debug information (for testing)
            // 1 = errors and messages
            // 2 = messages only
            
    $mail->SMTPAuth true// enable SMTP authentication
            
    $mail->SMTPSecure "ssl";
            
    $mail->Host "smtp.gmail.com"// sets the SMTP server
            
    $mail->Port 465// set the SMTP port for the GMAIL server
            
    $mail->Username "$sender_email"// SMTP account username
            
    $mail->Password "$sender_password"// SMTP account password
            
    $mail->SetFrom($sender_email,$sender_name);   
            
    $mail->AddReplyTo("$sender_email","$sender_name");
            
    $mail->Subject "Hello Dear $account_name";
            
    $mail->AltBody "To view the message, please use an HTML compatible email viewer!";
            
    $mail->MsgHTML($body);
            
    //is where is seems me be an array
            
    $mail->AddAddress($to1,$account_name);
            
    $mail->AddAddress($to2,$account_name);
        
            if(!
    $mail->Send()) {
                   echo 
    "Mailer Error: " $mail->ErrorInfo;
            } else {
                echo 
    "YOUR E-MAIL HAS SENT";
            }

        }
        
    ?>
        </body>
    </html>

  3. #3
    SitePoint Member
    Join Date
    Jun 2011
    Posts
    5
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Dear JamesKenny,
    Thanks for your Help.problem solved and it works great.

  4. #4
    SitePoint Enthusiast
    Join Date
    Nov 2011
    Location
    Florida
    Posts
    58
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    np glad to help


Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •