Ya hace un tiempo hablamos aquí de cómo enviar correos desde un script de php usando PHPMailer. He decidido hacer una serie de artículos ampliando un poco más el tema.
Una cuestión que puede ser interesante, sobre todo para aquellos que a lo mejor están en un hosting gratuito y no tienen cuentas de correo vinculadas a su dominio, es utilizar una cuenta de Gmail para enviar los correos. Ya que Gmail nos permiter usarlo como cualquier otro correo SMTP esto es factible.
Configurar PHPMailer para usar Gmail es simple, y podéis ver cómo se haría en el siguiente ejemplo (va comentado línea a línea):
/*Lo primero es añadir al script la clase phpmailer desde la ubicación en que esté*/ require '../class.phpmailer.php'; //Crear una instancia de PHPMailer $mail = new PHPMailer(); //Definir que vamos a usar SMTP $mail->IsSMTP(); //Esto es para activar el modo depuración. En entorno de pruebas lo mejor es 2, en producción siempre 0 // 0 = off (producción) // 1 = client messages // 2 = client and server messages $mail->SMTPDebug = 0; //Ahora definimos gmail como servidor que aloja nuestro SMTP $mail->Host = 'smtp.gmail.com'; //El puerto será el 587 ya que usamos encriptación TLS $mail->Port = 587; //Definmos la seguridad como TLS $mail->SMTPSecure = 'tls'; //Tenemos que usar gmail autenticados, así que esto a TRUE $mail->SMTPAuth = true; //Definimos la cuenta que vamos a usar. Dirección completa de la misma $mail->Username = "tucuenta@gmail.com"; //Introducimos nuestra contraseña de gmail $mail->Password = "tucontraseña"; //Definimos el remitente (dirección y, opcionalmente, nombre) $mail->SetFrom('tucuenta@gmail.com', 'Mi nombre'); //Esta línea es por si queréis enviar copia a alguien (dirección y, opcionalmente, nombre) $mail->AddReplyTo('replyto@correoquesea.com','El de la réplica'); //Y, ahora sí, definimos el destinatario (dirección y, opcionalmente, nombre) $mail->AddAddress('destinatario@sucorreo.com', 'El Destinatario'); //Definimos el tema del email $mail->Subject = 'Esto es un correo de prueba'; //Para enviar un correo formateado en HTML lo cargamos con la siguiente función. Si no, puedes meterle directamente una cadena de texto. $mail->MsgHTML(file_get_contents('correomaquetado.html'), dirname(ruta_al_archivo)); //Y por si nos bloquean el contenido HTML (algunos correos lo hacen por seguridad) una versión alternativa en texto plano (también será válida para lectores de pantalla) $mail->AltBody = 'This is a plain-text message body'; //Enviamos el correo if(!$mail->Send()) { echo "Error: " . $mail->ErrorInfo; } else { echo "Enviado!"; }
Esencialmente es casi lo mismo que viene en los DOCS que acompañan a los archivos, pero traducido.
Espero que os sirva. Próximamente más PHPMailer, y más programación web.
He estado revisando muuuchos foros de PHPMailer, y con todos los ejemplos que he probado, obtengo este error:
«Fix the way that SMTP host lists are parsed, see #112»
¿Sabrás a que puede deberse?, copié textualmente tu ejemplo, y obviamente cambié las direcciones de correo, pero nada…
Cualquier cosa, quedo atento. Gracias por la comprensión y el tema !
Puede que tengas sin configurar tu cuenta de gmail para permitir el uso de otras cuentas.
eso es relamente necesario y como se hace eso???
Son los mismos pasos que para configurar el uso con thunderbird, creo recordar: https://support.mozilla.org/es/kb/thunderbird-y-gmail
Te dejo un video, tal vez en él se mencionen puntos que no habías considerado.
Saludos !!
sorry no pegué el link… xD
Hola Donie, sobre eel envio por phpmailer he realizado un scrip.php con el codigo que indicas cambiando los correos por los mios y dejando depuracion en 2. lo he subido al host junto con los class.smtp.php y class.phpmailer.php en la misma carpeta, cuando hago el envio no da error pero se queda la pagina en blanco y no recibo ningun correo, he mirado por la red y dicen que lo mejor es cambiar el puerto a 465 y tambien lo he probado y no hace nada.
Me puedes ayudar a conocer el problema ya que el host «Hostinger» no me permite utiizar su smpt por temas de spam y me han dicho que lo unico es que utilice el phmailer.
Gracias por tu tiempo.
Dani.
Amigo a mi tambien me genera error al querer enviar el correo, igualmente he intentado cambiar de puertos y la verdad me frustra ver como el código les sirve en tutoriales y cuando lo aplico yo no funcion. Y uso exactamente el mismo código que todos las mismas configuraciones hasta he habilitado mi cuenta de gmail a que pueda funcionar en otras aplicaciones, es decir, para que no me bloquee mi cuenta a la hora de enviar el correo desde mi página web.
Alguien podría ayudarme no se que más hacer
hola Dani soy nuevo en esto solo queria preguntarte como mandaste llamar tu archivo .php donde pusimos nuestros correos
Hola he seguido el articulo paso a paso.
He intentado tanto con este tutorial como con otros, además también lo he intentado con swiftmailer y aunque parece que todo está correcto, al ejecutarlo siempre aparece el mismo mensaje:
«La página localhost no funciona
La página localhost no puede procesar esta solicitud ahora.
500»
Estoy bajo ubuntu y he instalado lamp.
SI alguien sabe porque aparece este error y puede ayudarme lo agradecería.
Un saludo.
IDEM Pedro, ayuda!!
Buenas tardes y gracias por tanto aporte!
Te hago una consulta, el unico error que obtengo es al llamar a PHPMailer.
Me sale: undefined type PHPMailer.php y realmente no se como resolverlo.
Gracias!
Hola desde RD. la documentación tiene una maldita gran cantidad de cosas que mierda, esto fue sencillo directo y funciona, gracias bro