Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Estas en el tema de Envio de emails con phpmailer a varios destinatarios con diferente cuerpo en el foro de PHP en Foros del Web. Buenas, necesitaba algo de ayuda con este tema que no me acaba de salir, me explico tengo un formulario con una checkbox para seleccionar el ...
  #1 (permalink)  
Antiguo 11/08/2016, 13:54
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años, 7 meses
Puntos: 1
Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Buenas, necesitaba algo de ayuda con este tema que no me acaba de salir, me explico tengo un formulario con una checkbox para seleccionar el destinatario (tienda) y un input para escribir el numero de cajas que les envío,

este es el formulario:

Código PHP:
<!DOCTYPE html>
<
html>
<
style type="text/css">
div.multiple {
    
height150px;
    
overflowauto;
    
background:#eee;
    
border:5px solid #eee;
    
margin:0 0 1.5em 25px;
}
</
style>
    <
head>
        
        <
meta charset="utf-8">
        <
meta name="viewport" content="width=device-width, initial-scale=1.0">
        <
link rel="stylesheet" type="text/css" href="css/bootstrap.css">
        <
link rel="stylesheet" type="text/css" href="css/estilos.css">
        <
script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
    </head>
    <body>
        <div class="wrap">
            <header>
                Enviar mail 
            </header>
 
           <section id="principal">
                <form id="formulario" method="post" action="bultos3.php" enctype="multipart/form-data">
                <div class="multiple">
                Tienda:<br>
                        <input type="checkbox" name="Tienda[]" value="Tienda 02" >Tienda 02&nbsp&nbsp&nbsp
                        <label>Numero de Bultos:</label>
                        <input type="text" name="mensaje[]"></input><br>
                            <input type="checkbox" name="Tienda[]" value="Tienda 03" >Tienda 03&nbsp&nbsp&nbsp
                            <label>Numero de Bultos:</label>
                        <input type="text" name="mensaje[]"></input><br>
                            <input type="checkbox" name="Tienda[]" value="Tienda 05" >Tienda 05&nbsp&nbsp&nbsp
                            <label>Numero de Bultos:</label>
                        <input type="text" name="mensaje[]"></input><br>
                            <input type="checkbox" name="Tienda[]" value="Tienda 06" >Tienda 06&nbsp&nbsp&nbsp
                 </div>
                    <input id="submit" type="submit" name="enviar" value="Enviar mail">
                </form>
 
            </section>
        
    </body>
</html> 
Le envio la informacion por POST a bultos3.php, que se encarga de enviar los emails, lo que pretendo es que salga un email a cada tienda con el numero de cajas de su input, la dirección de correo y la tienda las recojo con la consulta a la base de datos, consigo ver correctamente los array de tiendas y cajas, pero no soy capaz de desarrollar el ciclo para que los envié de uno en un.

esto es lo que tengo en php:

Código PHP:
<?php
include_once('PHPMailer/class.phpmailer.php');
include_once(
'PHPMailer/class.smtp.php');

$mensaje $_POST["mensaje"];
$centro $_POST["Tienda"];
$fecha date('d-m-Y');

$mail = new PHPMailer();
$mail->Host "smtp.gmail.com";//nuevo
$mail->IsSMTP();//nuevo
$mail->SMTPAuth true;//nuevo
$mail->SMTPSecure "ssl";//nuevo
$mail->Port 465;//nuevo

$mail->From "[email protected]";
$mail->FromName "Javier";
$mail->Subject "Envio de Bultos";
 

//Nuestra cuenta
$mail->Username ='[email protected]';
$mail->Password '123456789'//Su password

mysql_connect("localhost""admin"""); 
mysql_select_db("envios"); 
$result mysql_query("SELECT nombreR, email2 FROM usuarios "); 

echo 
var_dump ($centro);  // vista correcta
echo var_dump ($mensaje); //viasta correcta
if ($_SERVER["REQUEST_METHOD"] == "POST") {  
     
$mensaje=$_POST["mensaje"];
     
$count count($mensaje);
     for (
$i 0$i $count$i++) {
         

while (
$row mysql_fetch_array($result)) {
    
// HTML body 
    
$body "Hola <strong>".$row["nombreR"]."</strong>, "
    
$body.= "<p>Estos son los Bultos con salida hoy  $fecha <p>"
    
$body.= "<p>$mensaje[$i]<p>";
    
$body.= "<em>La Central </em>"
    
// Text body
    
$text "Hola ".$row["nombreR"].", \n\n"
    
$text.= "Estos son los Bultos con salida hoy $fecha\n\n"
    
$text.= $mensaje[$i]; 
    
$text.= "La Central";
    
// Configurar Email
    
$mail->Body $body
    
$mail->AltBody $text
    
$mail->AddAddress($row["email2"], $row["nombreR"]);
    
// Enviar el email
    
if(!$mail->Send()) {
        echo 
"Error al enviar a: " $row["email2"] . "<br>"
     }
    
$mail->ClearAddresses();  
}
}}
?>
espero que algen me pueda al menos guiar un poco. Gracias
  #2 (permalink)  
Antiguo 12/08/2016, 10:24
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Este es un intento de solución, creo que arreglo el porque no puedes crear el ciclo, pero hay cosas que no entiendo de tu logica y solo por esa razón las deje así, espero al menos esto te de una idea:
Código PHP:
Ver original
  1. <?php
  2. include_once('PHPMailer/class.phpmailer.php');
  3. include_once('PHPMailer/class.smtp.php');
  4.  
  5. $mensaje = $_POST["mensaje"];
  6. $centro = $_POST["Tienda"];
  7. $fecha = date('d-m-Y');
  8. mysql_connect("localhost", "admin", "");  
  9. mysql_select_db("envios");  
  10. $result = mysql_query("SELECT nombreR, email2 FROM usuarios ");  
  11. echo var_dump ($centro);  // vista correcta
  12. echo var_dump ($mensaje); //viasta correcta
  13. if ($_SERVER["REQUEST_METHOD"] == "POST") {  
  14.     $mensaje=$_POST["mensaje"];
  15.     $count = count($mensaje);
  16.     for ($i = 0; $i < $count; $i++) { //No se porque hay dos ciclos
  17.         while ($row = mysql_fetch_array($result)) {
  18.             // HTML body  
  19.             $body = "Hola <strong>".$row["nombreR"]."</strong>, ";  
  20.             $body.= "<p>Estos son los Bultos con salida hoy  $fecha <p>";  
  21.             $body.= "<p>$mensaje[$i]<p>"; //Esta linea no creo que funcione por el indice, concatena el arreglo, no uses expansion de variables
  22.             $body.= "<em>La Central </em>";  
  23.             // Text body
  24.             $text = "Hola ".$row["nombreR"].", \n\n";  
  25.             $text.= "Estos son los Bultos con salida hoy $fecha\n\n";  
  26.             $text.= $mensaje[$i];  
  27.             $text.= "La Central";
  28.  
  29.             $mail = new PHPMailer();
  30.             $mail->Host = "smtp.gmail.com";//nuevo
  31.             $mail->IsSMTP();//nuevo
  32.             $mail->SMTPAuth = true;//nuevo
  33.             $mail->SMTPSecure = "ssl";//nuevo
  34.             $mail->Port = 465;//nuevo
  35.  
  36.             $mail->From = "[email protected]";
  37.             $mail->FromName = "Javier";
  38.             $mail->Subject = "Envio de Bultos";
  39.              
  40.  
  41.             //Nuestra cuenta
  42.             $mail->Username ='[email protected]';
  43.             $mail->Password = '123456789'; //Su password
  44.             // Configurar Email
  45.             $mail->Body = $body;  
  46.             $mail->AltBody = $text;  
  47.             $mail->AddAddress($row["email2"], $row["nombreR"]);
  48.             // Enviar el email
  49.             if(!$mail->Send()) {
  50.                 echo "Error al enviar a: " . $row["email2"] . "<br>";  
  51.              }
  52.             $mail->ClearAddresses();  
  53.         }
  54.     }
  55. }
  56. ?>


Saludos
  #3 (permalink)  
Antiguo 12/08/2016, 14:09
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Gracias por tu ayuda, lo probaré, una pregunta cómo se concatena un arreglo , porque esa línea no me funciona
  #4 (permalink)  
Antiguo 12/08/2016, 17:00
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 9 meses
Puntos: 11
Respuesta: Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Código PHP:
Ver original
  1. $body.= "<p>".$mensaje[$i]."<p>";
  #5 (permalink)  
Antiguo 13/08/2016, 14:33
 
Fecha de Ingreso: abril-2016
Mensajes: 90
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: Envio de emails con phpmailer a varios destinatarios con diferente cuerpo

Muchas gracias, en cuanto tenga un momento voy a probar
Gracias otra vez

Etiquetas: cuerpo, diferente, emails, fecha, formulario, html, mysql, phpmailer, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:04.