Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] No puedo usar Phpmailer con gmail

Estas en el tema de No puedo usar Phpmailer con gmail en el foro de PHP en Foros del Web. esta es la configuración que utilizo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original // primero hay que incluir la clase phpmailer para poder instanciar     ...
  #1 (permalink)  
Antiguo 26/02/2014, 07:49
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
No puedo usar Phpmailer con gmail

esta es la configuración que utilizo

Código PHP:
Ver original
  1. // primero hay que incluir la clase phpmailer para poder instanciar
  2.       //un objeto de la misma
  3.       require "PHPMailer/class.phpmailer.php";
  4.  
  5.       //Crear una instancia de PHPMailer
  6. $mail = new PHPMailer();
  7. //Definir que vamos a usar SMTP
  8. $mail->IsSMTP();
  9. //Esto es para activar el modo depuración. En entorno de pruebas lo mejor es 2, en producción siempre 0
  10. // 0 = off (producción)
  11. // 1 = client messages
  12. // 2 = client and server messages
  13. $mail->SMTPDebug  = 0;
  14.  
  15.       //Asignamos a Host el nombre de nuestro servidor smtp
  16.       $mail->Host = "smtp.gmail.com";
  17.      
  18.       $mail->Port       = 587;
  19.       //Definmos la seguridad como TLS
  20.       $mail->SMTPSecure = 'tls';
  21.      
  22.       //Le indicamos que el servidor smtp requiere autenticación
  23.       $mail->SMTPAuth = true;
  24.  
  25.       //Le decimos cual es nuestro nombre de usuario y password
  26.       $mail->Username = "****@gmail.com";
  27.       $mail->Password = "*****";
  28.      
  29.       //Indicamos cual es nuestra dirección de correo y el nombre que
  30.       //queremos que vea el usuario que lee nuestro correo
  31.       $mail->From = "[email protected]";
  32.  
  33.       $mail->FromName = "The Matrix Thinking";
  34.  
  35.       //Asignamos asunto y cuerpo del mensaje
  36.       //El cuerpo del mensaje lo ponemos en formato html, haciendo
  37.       //que se vea en negrita
  38.       $mail->Subject = "Libro Piensa en lo Nuevo";
  39.       $mail->Body = "<b>Acabas de recibir el libro Piensa en lo Nuevo en formato pdf, descargalo y disfruta tu lectura.</b>";
  40.  
  41.       //Definimos AltBody por si el destinatario del correo no admite
  42.       //email con formato html
  43.       $mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto";
  44.  
  45.       //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
  46.       //una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120  
  47.       $mail->Timeout=120;
  48.  
  49.       //Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
  50.       $mail->AddAttachment('/webroot/matrix/beta2/zte45m8Ih/Piensa_en_Lo_Nuevo/libro.pdf');

Y no me funciona, me dice que no se puede conectar al servidor SMTP, alguien sabe como solucionarlo o alguna alternativa a gmail?
__________________
Say no more.......
  #2 (permalink)  
Antiguo 26/02/2014, 07:53
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 23 años, 5 meses
Puntos: 20
Respuesta: No puedo usar Phpmailer con gmail

La solución fue enviarlo por el localhost de esta manera

Código PHP:
Ver original
  1. <?php
  2. include ('conexion.php');
  3.  
  4. //Recibimos las variables
  5. $codigo = $_POST['codigo'];
  6. $email = $_POST['email'];
  7. $libro = $_POST['libro'];
  8.  
  9. //Desechamos el código
  10.  
  11. $update = "UPDATE primer_ttiraje SET activo = '1'  WHERE codigo ='$codigo'";
  12. $r_update = mysql_query ($update) or die (mysql_error());
  13.  
  14. $update2 = "UPDATE primer_ttiraje SET libro = '$libro' WHERE codigo ='$codigo' ";
  15. $r_update2 = mysql_query ($update2) or die (mysql_error());
  16.  
  17. //Enviamos el libro por correo:
  18.  
  19.  
  20. if ($libro =='1') {
  21. // primero hay que incluir la clase phpmailer para poder instanciar
  22.       //un objeto de la misma
  23.       require "PHPMailer/class.phpmailer.php";
  24.  
  25.       //Crear una instancia de PHPMailer
  26. $mail = new PHPMailer();
  27. //Definir que vamos a usar SMTP
  28.  
  29.       //Indicamos cual es nuestra dirección de correo y el nombre que
  30.       //queremos que vea el usuario que lee nuestro correo
  31.       $mail->From = "[email protected]";
  32.  
  33.       $mail->FromName = "The Matrix Thinking";
  34.  
  35.       //Asignamos asunto y cuerpo del mensaje
  36.       //El cuerpo del mensaje lo ponemos en formato html, haciendo
  37.       //que se vea en negrita
  38.       $mail->Subject = "Libro Piensa en lo Nuevo";
  39.       $mail->Body = "<b>Acabas de recibir el libro Piensa en lo Nuevo en formato pdf, descargalo y disfruta tu lectura.</b>";
  40.  
  41.       //Definimos AltBody por si el destinatario del correo no admite
  42.       //email con formato html
  43.       $mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto";
  44.  
  45.       //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
  46.       //una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120  
  47.       $mail->Timeout=120;
  48.  
  49.       //Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
  50.       $mail->AddAttachment('http://www.ricardolopezvega.com/matrix/beta2/zte45m8Ih/Piensa_en_Lo_Nuevo/libro.pdf');
  51.      
  52.  
  53.       //Indicamos cuales son las direcciones de destino del correo y enviamos
  54.       //los mensajes
  55.       //reset($direcciones);
  56.       //while (list($clave, $valor)=each($direcciones)) {
  57.     $mail->AddAddress($email);
  58.  
  59.     //se envia el mensaje, si no ha habido problemas la variable $success
  60.     //tendra el valor true
  61.     $exito = $mail->Send();
  62.  
  63.     //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
  64.     //como mucho para intentar enviar el mensaje, cada intento se hara 5 s
  65.     //segundos despues del anterior, para ello se usa la funcion sleep
  66.     $intentos=1;
  67.     while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
  68.        sleep(5);
  69.            //echo $mail->ErrorInfo;
  70.            $exito = $mail->Send();
  71.            $intentos=$intentos+1;              
  72.     }
  73.  
  74.     //La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
  75.     //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
  76.     //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
  77.     if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
  78.        $exito=true;
  79.         }
  80.        
  81.     if(!$exito)
  82.     {
  83.        echo "Problemas enviando correo electrónico a ".$valor;
  84.        echo "<br/>".$mail->ErrorInfo;  
  85.     }
  86.     else
  87.     {
  88.        //Mostramos un mensaje indicando las direccion de
  89.        //destino y fichero  adjunto enviado en el mensaje  
  90.        $mensaje="<p>Has enviado un mensaje a:<br/>";
  91.        $mensaje.=$valor." ";
  92.        if ($archivo !="none") {
  93.         $mensaje.="Con un fichero adjunto llamado ".$archivo_name;
  94.        }
  95.        $mensaje.="</p>";
  96.            echo $mensaje;
  97.  
  98.  
  99.     }
  100.     // Borro las direcciones de destino establecidas anteriormente
  101.         $mail->ClearAddresses();
  102.    
  103.    
  104.     echo "<a href='$PHP_SELF'> VOLVER AL FORMULARIO</a>";
  105. }
  106. ?>
__________________
Say no more.......

Etiquetas: formulario, gmail, html, phpmailer, usar
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 22:29.