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!"; }