Estoy intentando enviar por correo electrónico una serie de registros guardados en una variable de sesión (array). Para sacarlos utilizo un bucle for para que las recorra una por una.
El problema se presenta, al leer el correo (enviado por phpmailer) solo muestra un dato del array. No todos los que contiene. Tengo la idea que el problema se debe a que el bucle for buscar el primer elemento y luego, antes de llegar a la segunda solicitud se corre primero la clase phpmailer y por ello me envía un solo elemento.
He pensado en meterle alguna condicional a $mail -> Send(); pero no sabría cual podría ser la condición. Es decir, no se que puedo comparar o que parámetro darle para que no se ejecute hasta que finalice el bucle.
código, a continuación:
Código PHP:
require 'class.phpmailer.php';
//configuración de la clase
$mail = new PHPMailer();
$mail -> Host = 'smtp.gmail.com';
$mail -> IsHTML (true);
$mail -> IsSMTP();
$mail -> SMTPSecure = 'ssl';
$mail -> Port = 465;
$mail -> SMTPAuth = true;
$mail -> CharSet = "UTF-8";
$mail -> Username = 'XXX';
$mail -> Password = 'XXX';
$mail -> Subject = "Presupuesto, Estado: Procesando.";
$mail -> AddAddress(" ". $_SESSION['email'] ." ");
//$mail -> AddBCC("[email protected]");
//cuerpo del correo
for ($i=0; $i < count($_SESSION['carrito']) ; $i++) {
$body = "
<html>
<head>
</head>
<body style='margin: 0; padding: 0; width: 100%; overflow-y: hidden; background-color: #dcded3;'>
<h3 style='font-size: 13px; color: #333; margin-left: 50px;'>¡Enhorabuena!<h3>
<p style='margin-left: 50px; style-weigth: normal; font-style: normal; font-size: 13px; color: #333;'>Tu presupuesto se ha procesado, a la brevedad posible contactaremos con usted.</p>
<p style='margin-left: 50px; font-size: 15px; font-size: 13px; color: #333;'>A continuación, su pedido:</p>
<table>
<thead>
<tr>
<td>Foto</td>
<td>Nombre de Producto</td>
</tr>
</thead>
<tbody>
<tr>
<td>" . $_SESSION['carrito'][$i]['nombre']. "<td />
</tr>
</tbody>
</table>
</body>
</html>
";
}
$mail -> isHTML(true);
$mail -> Body = $body;
$mail -> Send();