我有一个不同目的地的循环来发送几封电子邮件。当我逐个发送它们(打破for-each)时,邮件发送成功。当我允许for-each在循环中发送所有邮件时,几封电子邮件空白......
为什么尝试从for-each循环中发送多封电子邮件会导致空白电子邮件?
foreach ($facturas as $factura) {
$para = "";
$cabeceras = "";
$mensaje = "";
$título = "";
$query = "SELECT *,u.email as email_usuario,u.nombre usu_nombre,u.apellido usu_apellido,e.nombre evento_nombre,
e.fecha evento_fecha,o.nombre op_nombre,c.nombre cat_nombre
FROM facturas
INNER JOIN inscribite_eventos e ON e.codigo = fac_evento_id
INNER JOIN inscribite_opciones o ON o.id = fac_op_id AND o.evento = fac_evento_id
INNER JOIN inscribite_categorias c ON c.deevento = fac_evento_id AND c.codigo = fac_cat_id
INNER JOIN inscribite_usuarios u ON u.id = fac_usu_id
WHERE fac_id = {$factura['fac_id']}";
$inscripcion = getRowQuery($query, $mysqli);
if (!empty($mysqli->error)) {
throw new Exception('Fallo trayendo datos' . $query . '<br>' . $mysqli->error);
}
//$para = ' '.$inscripcion['usu_nombre'].' '.$inscripcion['usu_apellido'].' <'.$inscripcion['email_usuario'].'>'; // con coma si son más
$para = 'dedieu92g@gmail.com';
// título
$título = 'Confirmacion de Pago Inscribite Online';
// Para enviar un correo HTML, debe establecerse la cabecera Content-type
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
// Cabeceras adicionales
//$cabeceras .= 'To: Usuario <'.$inscripcion['email_usuario'].'>' . "\r\n";
$cabeceras .= 'From: Recordatorio <info@inscribiteonline.com.ar>' . "\r\n";
$cabeceras .= 'Cc: Recordatorio <info@inscribiteonline.com.ar>' . "\r\n";
if ($inscripcion['tipo'] == 'Deportivos') {
require_once 'mail_deportivos.php';
}
elseif ($inscripcion['tipo'] == 'Servicios') {
require_once 'mail_servicios.php';
}
elseif ($inscripcion['tipo'] == 'Productos') {
require_once 'mail_productos.php';
}
elseif ($inscripcion['tipo'] == 'Capacitación') {
require_once 'mail_capacitacion.php';
}
header('Content-Type: text/html; charset=UTF-8');
// Enviarlo
if(mail($para, $título, $mensaje, $cabeceras)){
$query = "UPDATE facturas_pagas SET facp_avisado = 1 WHERE facp_fac_id = {$inscripcion['fac_id']}";
runQuery($query,$mysqli);
//echo $mensaje;
//die('mando con factura'.$inscripcion['fac_id']);
}
sleep(2);
}
答案 0 :(得分:0)
谢谢andrewsi,你是对的。问题是我在循环中使用了require_once,当循环的下一个cicle到达时,var mensaje再也没有填充因为代码已经被要求了。
我替换了包含的require_once,并且所有工作都完美地运行=)
非常感谢!