Me autorespondo:
En lugar de empty() usar isset() (cambiar de saber si esta vacio a saber si contiene algun valor)
La variable $exito que hace el envio del mail de phpmailer debe de asignar luego del IF
y la variable $intentos asignarla desde antes de todo el script junto con el resto de las variables.
Todos las sentencias se deben agrupar debajo de if(!isset($_POST['submit'])) y ya... parece.
No se si en verdad sea así, pero a mi me funciona y con eso me parece que es suficiente.
Gracias
Código PHP:
<?php
session_start();
session_id();
$nombre = $_POST['name'];
$mailo = $_POST['mail'];
require "includes/class.phpmailer.php";
$mail = new phpmailer();
$mail->PluginDir = "includes/";
$mail->Mailer = "smtp";
$mail->Host = "smtp.***.com";
$mail->SMTPAuth = true;
$mail->Username = "**@****.com";
$mail->Password = "***";
$mail->From = "**@****.com";
$mail->FromName = "**";
$mail->Timeout=30;
$mail->AddAddress("**@***.com");
$mail->Subject = "**";
$mail->Body = "$nombre, $mailo";
$mail->AltBody = "para ver el mensaje necesita html";
$intentos=1;
if(!isset($_POST['submit']))
{
if (empty($nombre))
{
echo "<script>
alert('Por favor Ingrese un nombre')
</script>";
echo "<html><head></head>".
"<body onload=\"history.go(-2)\">".
"</body></html>";
exit;
}
elseif (empty($mailo))
{
echo "<script>
alert('Por favor Ingrese un e-mail')
</script>";
echo "<html><head></head>".
"<body onload=\"history.go(-2)\">".
"</body></html>";
exit;
}
if ((isset($mailo)) && (isset($nombre)))
$exito = $mail->Send();
while ((!$exito) && ($intentos < 5)) {
sleep(5);
$exito = $mail->Send();
$intentos=$intentos+1;
}
if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$valor;
echo "<br/>".$mail->ErrorInfo;
}
else
{
echo "<script>
alert('Enviado. Gracias! :) ')
window.location.href = 'index.html';
</script>";
exit;
}
}
session_destroy()
?>