elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  PHPmailer funciona en XAMPP pero no en el hosting
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: PHPmailer funciona en XAMPP pero no en el hosting  (Leído 4,562 veces)
bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
PHPmailer funciona en XAMPP pero no en el hosting
« en: 11 Agosto 2019, 20:21 pm »

Buenas,

A ver si alguien me puede echar un cable, que ando un poco perdido...

He creado un formulario de contacto con PHPMailer que envia un mail con documento adjunto a una cuenta de Google. El formulario funciona perfecto dentro de XAMPP, no tengo ningun tipo de problema, hasta que decido subir los archivos al hosting...

Cuando relleno el formulario en el hosting (es Plesk Onyx 17.5.3 por si sirve de referencia) me genera un error "The following From address failed: xxx@yyy.com". Eso no me pasaba en localhost y por más que revise el codigo no veo ningun tipo de fallo.

No sé si tengo que modificar alguna linea de código en mi documento php para que funcione en un entrono Plesk o si debo modificar el php.ini de mi hosting. En cualquier caso, que puedo hacer?

Recalco que no puedo modificar nada de PHP en mi hosting y entiendo que en caso de querer modificar algo, debo contactar con mi proveedor para que me habilite ciertos permisos?

Agradecería alguna orientación,


Gracias,


En línea

animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #1 en: 12 Agosto 2019, 09:41 am »

¿Que servidor de smtp tienes puesto en tu código de php? Ten en cuenta que tienes que tener cuenta (usuario + password) en el servidor smtp al que se conecta.
Podría pasar que en tu xamp tenias puesto que se conectase a localhost y admitías cualquier usuario o no requeria de autenticación y al subirlo no has cambiado usuario y pass en relación a la configuración del servidor que te provee el servicio de hosting.
Lo más directo y tipico es utilizar el servidor smtp de outlook, gmail, whatever y el usuario y login de una cuenta que crees ahí.
Lo digo porque parece que en el servidor smtp al que te conectas parece no gustarle tus credenciales.


En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #2 en: 12 Agosto 2019, 13:29 pm »

Hola,

Gracias por contestar. Pues mira, usé el smtp de Google y el usuario y contraseña de una cuenta de Gmail que tengo para hacer pruebas. Pego aquí el código que tengo hecho y que en local no tengo problemas.

Código
  1. <?php
  2.  
  3. require ('phpmailer/class.phpmailer.php');
  4. require ('phpmailer/class.smtp.php');
  5.  
  6.    if(isset($_POST['submit'])){
  7. // recoge nombre, mail archivo adjunto y comentario desde formulario HTML
  8.        $name=$_POST['name'];
  9.        $email=$_POST['email'];
  10.        $message=$_POST['message'];
  11. $file = $_FILES['attachment'];
  12.  
  13.  
  14.        $mail = new PHPMailer();
  15.  
  16.        $mail->IsSMTP();
  17. $mail->SMTPDebug = 3;
  18. $mail->SMTPAuth = true;
  19. $mail->SMTPSecure = 'ssl';
  20.        $mail->Host = "smtp.gmail.com"; // SMTP a utilizar    
  21.        $mail->Port = 465;
  22.  
  23. //Mail y pass a utilizar
  24.        $mail->Username = "micuenta@gmail.com";
  25.        $mail->Password = "mipassword";
  26.  
  27.        $mail->From = $email;
  28.        $mail->FromName = "Formulario";
  29.        $mail->AddAddress ("micuenta@gmail.com");
  30.  
  31.        $mail->IsHTML(true);
  32.  
  33.        $mail->Subject = "Formulari de contacte de $name";
  34.  
  35.        // Inicio del mensaje HTML
  36.  
  37.        $mail->Body = "
  38.        <html>
  39.            <body>
  40.                <table style='width:600px;'>
  41.                    <tbody>
  42.                        <tr>
  43.                            <td style='width:150px'><strong>Nom i cognoms: </strong></td>
  44.                            <td style='width:400px'>$name</td>
  45.                        </tr>
  46.                        <tr>
  47.                            <td style='width:150px'><strong>Email: </strong></td>
  48.                            <td style='width:400px'>$email</td>
  49.                        </tr>
  50.                        <tr>
  51.                            <td style='width:150px'><strong>Comentari: </strong></td>
  52.                            <td style='width:400px'>$message</td>
  53.                        </tr>
  54.                    </tbody>
  55.                </table>
  56.            </body>
  57.        </html>
  58.        ";
  59.        // Fin del mensaje HTML
  60.  
  61.   $mail->AddAttachment($file['tmp_name'], $file['name']);
  62.  
  63. if ($mail->Send())
  64. echo "<script>alert('Formulari enviat. Li respondrem aviat.');location.href ='https://www.xxxxx.yyy';</script>";
  65. else
  66. echo "<script>alert('Error a l'hora d'enviar el formulari');location.href ='javascript:history.back()';</script>";
  67.  
  68.  
  69.    }
  70. ?>

Probé también con 'tls' y puerto 587 sin ningun éxito. También probé con el siguiente codigo sin éxito: https://gist.github.com/emmgfx/7762b85e924c24f7575fe36c315ff0e7

Añadiendo esto:

Código:
$mail->Host = 'localhost';
$mail->Port = 25;
$mail->SMTPSecure = 'tls'; # SSL is deprecated
$mail->SMTPOptions = array (
    'ssl' => array(
        'verify_peer'  => true,
        'verify_depth' => 3,
        'allow_self_signed' => true,
        'peer_name' => 'Plesk',
    )
);

Que tampoco lo conseguí hacerlo funcionar en mi hosting.

Gracias,

Saludos,
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #3 en: 12 Agosto 2019, 13:40 pm »

¿Puedes dar el error entero?

Veo que tienes habilitado el SMTPDebug y que está al nivel 3 así que deberías tener un log donde se ha registrado la información del debug.

https://github.com/PHPMailer/PHPMailer/wiki/SMTP-Debugging

Saludos
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #4 en: 12 Agosto 2019, 15:52 pm »

No se en que puerto escucha el SMTP de google o si usa SSL pero en tu código el:

From: está puesto para que use el correo del usuario y el destinatario eres tu. En otras palabras, estás usando el servidor de Gmail para decirle que envié un correo de la cuenta del usuario a tu misma cuenta de Gmail.

A menos que estes usando un campo de $_POST para configurar el sender.
En línea

bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #5 en: 12 Agosto 2019, 20:01 pm »

Hola,


Gracias por las respuestas. Os comento...

¿Puedes dar el error entero?

Veo que tienes habilitado el SMTPDebug y que está al nivel 3 así que deberías tener un log donde se ha registrado la información del debug.

https://github.com/PHPMailer/PHPMailer/wiki/SMTP-Debugging

Saludos

Me genera este error:

Código:
The following From address failed: xxx@yyy.zzz. The following From address failed: xxx@yyy.zzz

SMTP server error: 5.5.1 Authentication Required. Learn more at 530 5.5.1 https://support.google.com/mail/?p=WantAuthError b2sm12650924wrf.94 - gsmtp

No se en que puerto escucha el SMTP de google o si usa SSL pero en tu código el:

From: está puesto para que use el correo del usuario y el destinatario eres tu. En otras palabras, estás usando el servidor de Gmail para decirle que envié un correo de la cuenta del usuario a tu misma cuenta de Gmail.

A menos que estes usando un campo de $_POST para configurar el sender.

Pues no ha mejorado poniendo como destinatario otra cuenta de destino distinta, así que no sé :S

Recalco que en dicha cuenta de Gmail tengo activada el acceso de aplicaciones poco seguras

Saludos,
« Última modificación: 12 Agosto 2019, 21:31 pm por bettu » En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #6 en: 13 Agosto 2019, 01:15 am »

Estás usando el puerto smtps, gmilio no lo soporta.
Usa el 587, hablita tls y como te comentaron el from debe ser tu correo. From = Origen, no destino.
Where are you from? XD
Eso pasa por copiarle el código a los del vaticano. JAJA
En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

bettu


Desconectado Desconectado

Mensajes: 923


Ver Perfil
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #7 en: 16 Agosto 2019, 09:45 am »

Hola,

Gracias a todos por sus recomendaciones. Lamentablemente, ninguna me funcionó. Como dije, el código me iba perfecto en local pero cuando lo subí al hosting dejó de funcionar.

Ya probé usando SSL puerto 465 y TLS puerto 587 de Google sin ningún éxito en el hosting.

Al final lo que hice fue crear un nuevo correo: formularios@mihosting.com y configurar phpmailer para Plesk con esa dirección siguiendo como pauta el link que dejé más arriba. Al momento funcionó. Después, lo que hice fue crear una redirección de ese correo a la cuenta de Gmail que quería usar.

Por mi parte podemos dar el tema como resuelto.


Muchas gracias!
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: PHPmailer funciona en XAMPP pero no en el hosting
« Respuesta #8 en: 16 Agosto 2019, 20:49 pm »

Supongo que antes de hacer todas estas pruebas has configurado tu cuenta de gmail para habilitar la conexión de aplicaciones de terceros o inseguras, a demás de habilitar el servicio smtp.

Por defecto cuando gmail detecta que te estás conectando desde una dirección IP no común y que a demás no pertenece al mismo pais donde siempre te conectas, te bloquea la conexión por motivos de seguridad.

Debes ir a las configuraciones de tu cuenta e indicar que vas a permitir que tu servidor se pueda conectar a tu cuenta de gmail, no es un proceso facil, es bastante tedioso, despues deberás resolver una captcha y entrar en un enlace que te envían por correo.

https://devanswers.co/allow-less-secure-apps-access-gmail-account/
https://support.google.com/accounts/answer/6010255?hl=es

No has pensado en utilizar sendmail para enviar los correos de manera nativa via php utilizando mail()? asi no necesitarás una cuenta de gmail, recuerda que gmail te limita la cantidad de envíos y remitentes por día.

https://stackoverflow.com/questions/12301358/send-attachments-with-php-mail#answer-12313090
https://www.codexworld.com/send-email-with-attachment-php/
« Última modificación: 16 Agosto 2019, 20:56 pm por WHK » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ni Apache, ni Xampp ni Wamp...todos bien pero no cargo localhost!!! [¿Formateo?] « 1 2 »
Desarrollo Web
wolvelopez 14 25,217 Último mensaje 18 Febrero 2011, 13:22 pm
por wolvelopez
No ve funciona el phpmailer!
PHP
elpirata15hd 3 3,480 Último mensaje 29 Abril 2011, 00:00 am
por elpirata15hd
[Resuelto] instalacion xampp con php5 y mi aplicación funciona en php4
Desarrollo Web
OssoH 4 3,012 Último mensaje 14 Julio 2015, 20:35 pm
por OssoH
Cómo Pasar un sistema de Xampp a un Hosting Web?
PHP
Antoniio 0 2,042 Último mensaje 18 Enero 2017, 08:07 am
por Antoniio
Login funciona de manera local pero no en el Hosting
PHP
Tron9811 1 2,355 Último mensaje 19 Mayo 2018, 08:10 am
por Ali Baba
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines