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.

 # Original
if(strstr($hosts[$index], ":"))
	list($host, $port) = explode(":", $hosts[$index]);
else
{
	$host = $hosts[$index];
	$port = $this->Port;
}
 # 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

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