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