Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gmail?

Estas en el tema de ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gmail? en el foro de PHP en Foros del Web. Buen día. Intento enviar a un destinatario un mensaje. Para esto empleo la clase phpMailer. Por alguna razón que francamente me parece muy extraña, phpMailer ...
  #1 (permalink)  
Antiguo 07/11/2013, 12:39
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gmail?

Buen día.

Intento enviar a un destinatario un mensaje. Para esto empleo la clase phpMailer.

Por alguna razón que francamente me parece muy extraña, phpMailer envía el mensaje con una cuenta "x" de Gmail que me pertenece. Esto es, accede a ella con la contraseña y envía el mensaje. Si yo tuviera que enviar el mensaje con esa cuenta de correo no tendría yo ningún problema, y por ende no los molestaría a ustedes, amables foreros. La bronca es que necesito enviar el mensaje con otra cuenta, y phpMailer no logra autenticar ninguna otra cuenta de ningún otro servidor de correo que no sea esa cuenta "x" de Gmail de la que les hablo. Si intento enviar el mensaje con otra cuenta de correo, en pantalla devuelve el sig mensaje: SMTP Error: Could not authenticate.

¿Por qué phpMailer envía el mensaje con esa cuenta de correo específica y no con otra? No sé.

He aquí el código que empleo:
Código PHP:
require 'PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();
$mail->Host 'smtp.gmail.com';
$mail->SMTPAuth true;
$mail->Username '[email protected]';
$mail->Password 'micontrasena';
$mail->SMTPSecure 'tls';

$mail->From       '[email protected]';
$mail->FromName   'Mi nombre';
$mail->addAddress($email$nombre $apellidos);
$mail->WordWrap   50;
$mail->isHTML(true);
$mail->Subject    'Título del mensaje';
        
$mail->Body       $variableQueGuardaElMensajeAenviar;

$mail->AltBody 'This is the body in plain text for non-HTML mail clients';

if(!
$mail->send()) {
   echo 
'Message could not be sent.';
   echo 
'Mailer Error: ' $mail->ErrorInfo;
   exit;
}

echo 
'Message has been sent'
En estos días bajé la última versión de phpMailer, creo que es la 5.1, que es la que utilizo. En la 3ra línea viene declarada la función $mail->isSMTP(); Si se quita esta función (lo que equivale, me imagino, a no enviar el mensaje por SMTP), el mensaje se envía mediante cualquier cuenta de correo, Hotmail, Gmail, etc. Hasta aquí todo bien.
El problema con deshabilitar el isSMTP(), viene después, en la bandeja de entrada del destinatario. En ésta aparece nuestro mensaje, sí, pero junto con la leyenda de que dicho mensaje pudo ser enviado por alguien que está suplantando la identidad del verdadero dueño de la cuenta de Gmail o Hotmail, etc. Lo cual no es así. Gmail pone ahí un botón para que el destinatario nos denuncie como un correo fraudulento (y con ello el sitio desde donde se envió el mensaje). Phishing, se llama, creo.

Esto pasa, imagino, porque no se envío el mensaje usando el SMTP.

¿Cómo soluciono el problema?

¿Cómo configuro el phpMailer para usuar cualquier cuenta Gmail, autenticándola?

Saludos cordiales.
  #2 (permalink)  
Antiguo 07/11/2013, 13:11
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

Mmm prueba usar esto:

Código PHP:
Ver original
  1. //Para tls
  2. $mail->SMTPSecure = 'tls';
  3. $mail->Port = 587;
  4.  
  5. //Para ssl
  6. $mail->SMTPSecure = "ssl";
  7. $mail->Port = 465;


Una de las dos opciones te debería servir.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 07/11/2013, 14:09
Avatar de charlyrosero  
Fecha de Ingreso: julio-2006
Mensajes: 161
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

apoyando la respuesta de jonni aqui hay un ejemplo de phpmailer con cuenta de gmail

http://phpmailer.worxware.com/index....=examplebgmail
  #4 (permalink)  
Antiguo 12/11/2013, 18:12
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

Cita:
Iniciado por jonni09lo Ver Mensaje
Mmm prueba usar esto: Para tls
$mail->SMTPSecure = 'tls';
$mail->Port = 587;

//Para ssl
$mail->SMTPSecure = "ssl";
$mail->Port = 465;[/HIGHLIGHT]

Una de las dos opciones te debería servir...
Ok, bien. Perdón por la tardanza, es que en verdad he tenido mucho trabajo.

Antes que otra cosa, gracias por responder.


Con respecto al maestro jonni09lo, probé las 2 formas que indica y el resultado fue el mismo: SMTP Error: Could not authenticate.


Incluso se me ocurrió mezclar y puse:

Código Otro:
Ver original
  1. ssl
  2. 587
  3. Lo cual culminó en un: [B]SMTP Error: Could not connect to SMTP host.[/B]
  4.  
  5.  
  6.  
  7. tls
  8. 465
  9. Lo cual culminó en un: [B]Language string failed to load: tls[/B]

Con respecto al maestro charlyrosero, visité el link, lo copié tal cual en mi archivo PHP, haciendo los cambios pertinentes, y la cosa resultó la misma: SMTP Error: Could not authenticate.



Alguna otra idea!

Saludos!
  #5 (permalink)  
Antiguo 25/12/2013, 18:08
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

Nuevamente, perdón por la tardanza.

Pero logré solucionar mi problema.

Según veo, las cosas están así. Si uno ejecuta phpMailer por primera vez en un servidos x, nos sale un error que dice algo como: "No se puede autenticar la cuenta. Abra su correo y posteriormente ejecute este phpMailer". Si uno abre en una pestaña del navegador la cuenta de correo (de Gmail, Yahoo, etc) con la que intentamos enviar el correo con phpMailer, y en otra pestaña abrimos la página que ejecuta el phpMailer, como que de algún modo phpMailer logra autenticar la cuenta satisfactoriamente.

Pero si luego de hacer lo anterior intentamos enviar el mensaje con otra cuenta de correo, ya no nos deja. Dice que no se puede autenticar la cuenta. ¿Por qué? No sé. Lo que me funcionó a mí, es abrir otra cuenta en otro hosting y ejecutar ahí el phpMailer con la nueva cuenta de correo que queremos utilizar para enviar el mensaje. Y hacer lo que dije anteriormente, abrir en una pestaña nuestro correo...


No sé si esto sea el protocolo para trabajar con phpMailer, lo dudo. Pero a mí me funcionó así.

Dejo aquí esta información por si a alguien le sirve.

SALUDOS.
  #6 (permalink)  
Antiguo 28/12/2013, 13:40
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

El compañero ruben_chirinos_1985 solicitó ayuda con phpMailer. Voy a compartir mi experiencia con phpMailer. Hago un copy-paste de su mensaje:

Cita:
Iniciado por ruben_chirinos_1985;
hola como estas soy de Venezuela y lei tu tema sobre enviar mensajes con phpmailer y lo lograste y queri saber si podrias hacerme el favor de compartir ese codigo y saber como lo lograste yo e tratado miles de veces y aun no logro hacerlo y saber q hosting usas para configurarlo yo tengo un hosting casero en mi pc con xampp y uso mercury y uso como otro hosting a hostinger...
1. Acerca de qué hosting uso: http://www.hostinger.com.mx Es gratuito y exceptuando las veces en que se les caen los dominios gratuitos que ofrecen, en general dan un buen servicio.
2. Acerca del servidor local. Hasta donde sé, no se puede enviar un mensaje con phpMailer desde un servidor local, como xamp, wamp, lamp, etc. (Igual y sí se puede, pero uno tendría que configurarse, no sé, un servidor de correo local -¿existe algo así?)

Para bajar el archivo php que contiene el código phpMailer con el que yo envío mensajes, clic AQUÍ.

Saludos

Última edición por berkeleyPunk; 28/12/2013 a las 13:46
  #7 (permalink)  
Antiguo 29/12/2013, 19:57
Avatar de giancarloffi  
Fecha de Ingreso: julio-2013
Mensajes: 63
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

claro que puedes enviar desde tu servidor local (yo uso wamp) correos con phpMailer, busca en google o aca mismo sobre sendmail.
  #8 (permalink)  
Antiguo 30/12/2013, 02:44
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

Yo tenía ese mismo problema, y es que el puerto de salida se encuentra bloquedado en el 95% de los hosting y proveedores de Internet.

Debes solicitar te lo abran.
  #9 (permalink)  
Antiguo 07/06/2014, 07:47
 
Fecha de Ingreso: junio-2014
Mensajes: 1
Antigüedad: 9 años, 10 meses
Puntos: 0
De acuerdo Respuesta: ¿Cómo configurar phpMailer para enviar un mensaje con cualquier cuenta Gma

Hola, la verdad es que no suelo escribir nunca en foros pero esta vez lo hago porque me he pegado bastante tiempo con esto, que soy nuevo en hacer webs y me sentía impotente... pero al final lo conseguí.

Necesitaras tres ficheros de PHPMailer en el directorio en el que estas construyendo tu php:
-class.smtp.php
-PHPMailerAutoload.php
-class.phpmailer.php

Descargarlos de este enlace: https://github.com/Synchro/PHPMailer

Finalmente mi código queda adaptándolo del inicial, así:

<?php
require 'PHPMailerAutoload.php';

//Creamos una instancia de la clase PHPMailer
$mail = new PHPMailer;
//Configuramos el correo de origen, el servidor smtp. así como su puerto
//En este caso gmail.
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'motog123';
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
//Escribimos el correo de origen de antes
$mail->From = '[email protected]';
$mail->FromName = 'soy un correo de phpmailer';//titulo del correo
$email="[email protected]";//usuarios al que va destinado el correo
$nombre="usuario";//Nombre de usuarios
$apellidos="";//Apellidos si los quieres

$mail->addAddress($email, $nombre . $apellidos);
$mail->WordWrap = 50;
$mail->isHTML(true);
$mail->Subject = 'Confirmacion del correo';//encabezado

$mail->Body = "Hola soy el contenido del correo";

$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

if(!$mail->send()) {
echo 'No se ha podido mandar el mensaje.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
exit;
}

echo 'Mensaje enviado';
?>

He de decir que este código me funciona para un servidor de la universidad que es donde estamos estudiando una asignatura de web... Si estas con un host tipo hostinger me sale este mensaje:

Error: SMTP connect() failed.

Tendrás que hablarlo con ellos para que te habiliten ese puerto o SOLO EN EL CASO DE HOSTINGER usa :
$mail->SMTPSecure = "tls";
$mail->Port = 587;

que a mi me ha funcionado con ese puerto

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:10.