En un hilo publicado en forosdelweb, en el que un usuario desea utilizar el servidor SMTP de GMail para enviar correos usando PHPMailer, hacen referencia a esta interesante entrada que sirve justamente para lo antes mencionado.
Hice algunos cambios en class.phpmailer.php (línea 537) para separar correctamente el host y el puerto cuando se tienen cosas como $mail->Host = 'ssl://smtp.gmail.com:465';
, estos cambios se hicieron debido a que GMail usa SSL/TLS como protocolo de comunicación/autenticación.
php:
# Original
if(strstr($hosts[$index],
":"))
list($host,
$port) =
explode(":",
$hosts[$index]);
else
{
$host =
$hosts[$index];
$port =
$this->
Port;
}
php:
# Modificación
if (preg_match('#(([a-z]+://)?[^:]+):(\d+)#i',
$hosts[$index],
$match))
{
$host =
$match[1];
$port =
$match[3];
}
else
{
$host =
$hosts[$index];
$port =
$this->
Port;
}
Página de prueba:
php:
<?php
require_once 'class.phpmailer.php';
$mail = new PHPMailer ();
$mail -> From = "foo@gmail.com";
$mail -> FromName = "Foo";
$mail -> AddAddress ("bar@domain.com");
$mail -> Subject = "Test";
$mail -> Body = "<h3>From GMail!</h3>";
$mail -> IsHTML (true);
$mail->IsSMTP();
$mail->Host = 'ssl://smtp.gmail.com';
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = 'foo@gmail.com';
$mail->Password = '******';
if(!$mail->Send()) {
echo 'Error: ' . $mail->ErrorInfo;
}
else {
{ echo 'Mail enviado!'.
}
?>
Nota: Para hacerlo funcionar es necesario que la extensión OpenSSL esté habilitada.
Archivos relacionados