Buenas,
Lo primero comentar por si alguien le sirve de ayuda cómo he logrado usar GMail con PHPMailer: tras los cambios en GMail y que comencé a usar PHPMailer ha sido un quebradero de cabeza, pues cambió la forma de conectar, y no funciona el código que viene en la web oficial de PHPMailer... hasta que por casualidad me función comentando la línea:
//$mail->IsSMTP();
Una vez lo solucioné, vengo a plantear una duda que tengo de POR QUÉ FUNCIONA este código, pues funciona quitando los datos de una cuenta existente (usuario y password) que se supone (según los ejemplos que he visto) que se usa para el envío.
Y si pongo unos datos no válidos, funciona también.
Y también poniendo: "$mail->SMTPAuth = false;" en lugar de true.
Los correos llegan desde GMail, lo he comprobado.
ACTUALIZADO: sigo investigando y veo que los correos se están enviando a través de mi proveedor de hosting, en enviado por pone una cadena terminada en "secureserver.net" que es de mi hosting (es esto normal?). Mirando el php.ini del hosting ponia "SMTP = relay-hosting.secureserver.net" y lo cambié a "SMTP = smtp.google.com" pero sigue todo igual... el envío se hace siempre desde secureserver... estoy confuso y no se si se me escapa algo :)
Código:
$mail = new PHPMailer();
// DATOS SERVIDOR CORREO:
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true; // Indicamos que el servidor requiere autenticación
$mail->SMTPSecure = "tls";
$mail->Port = "587";
//$mail->IsSMTP(); // Por alguna razón si no se quita, da error ¿?
// DATOS ACCESO SERVIDOR CORREO: ¿por que funciona comentándolo??
//$mail->Username = "[email protected]";
//$mail->Password = "poner_el_password";
// FROM (nuestra dirección de correo y el nombre que queremos que vea el usuario que lee nuestro correo):
$mail->From = "[email protected]";
$mail->FromName = "nombre_remitente";
// DESTINATARIO:
$mail->AddAddress("[email protected]", "DESTINATARIO");
// ASUNTO:
$mail->Subject = "el_asunto";
// CUERPO:
$mail->IsHTML(true);
// ... si el proveedor de correo de destino no soporta HTML
$mail->AltBody = "el mensaje aqui";
// ... en HTML
//$mail->Body = "<b>el mensaje aqui</b>";
// DEBUG
$mail->SMTPDebug = 2;
if(!$mail->Send()) {
echo "error!";
} else {
echo "ok!";
}