A continuación les muestro un código que ejemplifica las lineas necesarias para el envío de correo electrónico usando PHPmailer via SMTP.
Inicialmente necesitamos descargar al menos las clases las clases class.phpmailer.php y class.smtp necesarias para su funcionamiento, la descarga se puede hacer desde aquí .
<?php
require "includes/class.phpmailer.php";
$mail = new phpmailer();
//parametros de configuración del servidor de envio
$mail-Mailer = "smtp";
$mail->Host = "servidor.dominio.com";
$mail->Username = "Nombre-de-usuario";
$mail->Password = "******************";
//en caso de que el servidor utilice autenticación para conectarse especificamos
$mail->SMTPAuth = true;
//si el puerto utilizado no es el predeterminado (25) debemos especificar explicitamente el puerto de conexion utilizado por el servidor
$mail->Port = 587;
$mail->From = "usuario@dominio.com";
$mail->FromName = "Nombre del usuario";
$mail->Timeout=30;
//Indicamos cual es la dirección de destino del correo
$mail->AddAddress("destino@dominio.com");
$mail->Subject = "Colocamos aquí el asunto del correo";
$mail->Body = "Dentro de Body colocamos el cuerpo del correo electónico«;
$mail->AltBody = «AltBody es un mensaje de texto alternativo al contenido del cuerpo del mensaje, debe ser descriptivo al contenido del mensaje»;
$seEnvio = false;
//se realizan hasta 5 intentos de envio de correo
$intentos=0;
while ((!$seEnvio) && ($intentos < 5)) {
sleep(5);
$seEnvio= $mail->Send();
$intentos=$intentos+1;
}
if(!$seEnvio)
{
echo «Ocurrio un error al intentar enviar el correo «;
echo «
«.$mail->ErrorInfo;
}
else
{
echo «El mensaje de correo electrónico se envió correctamente»;
}
?>
Las consideraciones que debemos tener son:
- Verificar el nombre o IP del servidor de correo que utilizaremos para enviar el correo
- Verificar el puerto de comunicación
- Verificar si el servidor requiere autenticación
- Verificar el puerto de comunicación
- Proporcionar correctamente el nombre y contraseña de la cuenta de usuario
Saludos
Me parece que hay un error en las siguientes lineas:
while ((!$seEnvio) && ($intentos Send();
$intentos=$intentos+1;
}
creo que deberia ser algo como esto
while( (!$mail->send() ) && $intentos < 5 )
$intentos=$intentos+1;
claro, esto suponiendo que el metodo send() existe para la clase phpmailer y que regresa un booleano indicando si el envio se realizo correctamente…
Hola Luis….
Primeramente te agradezco tu notificacion en el error del código. aprovecho para confirmarles que el código original estuvo correcto el problema ocurrio al momento de copiar y pegar el codigo a la ventana de edición de la entrada ya que se interpretó el caracter < como parte del codigo de la página y no como del contenido de la entrada.
He corregido el código visible en base a tu notificacion.
ok, si eso suele pasar cuando se pega codigo xq la sintaxis en algunos casos puede resultar parecida a la sintaxis HTML
y para poder seguir utilizando la variable $seEnvio seria necesario almacenar el resultado de $mail->send en esa variable….
while( !($seEnvio = $mail->send()) && $intentos<5 )
Dejé en la entrada el código original.