Formulario de contacto + send.php = 404

Iniciado por 808mafia, Febrero 08, 2016, 05:31:27 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 08, 2016, 05:31:27 PM Ultima modificación: Febrero 11, 2016, 09:22:36 AM por blackdrake
Hola, tengo el siguiente formulario:
Código: html5
<p>
       
        <form method="post" action="send.php" onsubmit="return verifyForm();">
<div class="cform1">
        <table class="center">
        <tr>
        <td>
               <input type="text" name="email" id="email" placeholder="Tu Email" required autocomplete="off">
                </td>
                                <td>
                                    <input type="text" name="name" id="name" placeholder="Tu nombre" required autocomplete="off">
                                </td>
        </tr>
        <tr>
        <td colspan="2"><input type="text" name="subject" id="subject" placeholder="Motivo de tu contacto" maxlength="45" autocomplete="off"></td>
        </tr>
        <tr>
        <td colspan="2">
        <textarea name="mensaje" id="mensaje" class="textarea1" placeholder="Escribe aquí tu mensaje..." required></textarea>
        </td>
        </tr>
                <tr>
        <td colspan="2">
        <button class="inputst4 sendbutton" id="inputsend"><span class="icon-tsenvelope"></span> Enviar Mensaje</button>
        </tr>
        </table>
        </form>
        </div>
       
        </p>


Y el archivo send.php:
Código: php
<?php
error_reporting(0);

        $email = $_POST['email'];
$name = $_POST['name'];
        $subject = $_POST['subject'];
$mensaje = $_POST['mensaje'];

if ($email=='' || $name=='' || $subject=='' || $mensaje==''){

echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{

    require("includes/class.phpmailer.php");
    include("includes/class.smtp.php");
   
   
   

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="name: ".$name."<br />Email: ".$email."<br />mensaje: ".$mensaje."<br />";
try {
$mail->Host       = "smtp.gmail.com"; // SMTP server
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = 465;                    // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "mypasswordgmail";        // SMTP account password
$mail->AddReplyTo($email, $name);
$mail->AddAddress('[email protected]', '[email protected]');
$mail->SetFrom("$email", $name);
$mail->IsHTML(true);
$mail->Subject = 'Contacto';

$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$name.' \n<br />'.
'Email: '.$email.' \n<br />'.
'Mensaje: '.$mensaje.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}

?>


Y me sale 404 cuando intento enviar el mensaje desde el hosting, uso hostinger.

Saludos!

Hola, te dejo el link de un post que hiciste tu y que lograste solucionar

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!
ANTRAX


Febrero 08, 2016, 07:46:12 PM #2 Ultima modificación: Febrero 08, 2016, 07:56:17 PM por 808mafia
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola, te dejo el link de un post que hiciste tu y que lograste solucionar

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!
ANTRAX

Sí es lo mismo, pero añado la línea que puse y nada! El formulario y el php están bien no? Me da error_404

Edito: Ya he probado con el smtp de gmail y también con el correo y smpt de mi dominio y nada.

Podrías indicar bien la linea que has puesto?

Saludos!
ANTRAX


Febrero 08, 2016, 08:37:12 PM #4 Ultima modificación: Febrero 08, 2016, 08:41:16 PM por 808mafia
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Podrías indicar bien la linea que has puesto?

Saludos!
ANTRAX

                      $mail->SMTPSecure = "ssl";               // SMTPSecure

Después de SMTPAuth.

Proba poniendolo asi:

Código: php
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Proba poniendolo asi:

Código: php
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";


Mismo error, me sale 404.

Puedes probar en otro servidor para descartar eso? Es raro que te de un 404 (Not found), si el fichero send.php existe.

Saludos.



El send.php está en la misma carpeta que el archivo html?
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El send.php está en la misma carpeta que el archivo html?

El send.php está en el directorio principal. Lo raro es que he editado el archivo send.php para mostrar un mensaje de problemas técnicos y si me aparece cuando llamo al php desde el formulario  :(

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
El send.php está en la misma carpeta que el archivo html?

El send.php está en el directorio principal. Lo raro es que he editado el archivo send.php para mostrar un mensaje de problemas técnicos y si me aparece cuando llamo al php desde el formulario  :(

Y el html dónde se encuentra el form? También está en la raiz?

Saludos.



Tengo un par de consultas 808mafia :
Supongamos que tienes todas las llamadas escritas en el código correctamente, por favor revisa la raiz de directorios, includes y la extensión del index.

       
  • Has intentado hacer el envio sin ssl?
  • Porque no pruebas con algo más sencillo para ver si no hay otra cosa que afecte?
te dejo este code básico para que lo pruebes con tu smtp local
Citar<?php

   $smtp = ""; //si tenes SMTP local mejor para probarlo
   $url = "localhost"; //server
   $puerto = "25"; //sin ssl
   $remitente = "";
   $too = "";
    
   ini_set($smtp,$url);
   ini_set("smtp_port",$puerto);
   ini_set("sendmail_from",$remitente);
   
   $subject = "test";
   $message = "prueba de correo";
   $headers = "From: $remitente" ;
   
   mail($too,$subject,$message,$headers);
?>


Quizas separar el código para debugear?


Best regards,
U.

Febrero 12, 2016, 02:12:14 PM #12 Ultima modificación: Febrero 12, 2016, 02:14:00 PM por 808mafia
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ahora he probado poniendo e archivo php donde se encuentra el form en vez de directamente en la raiz y cuando intento enviar el formulario me sale un error que dice:

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/user212121/public_html/mi-carpeta/send.php on line 28

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ya he intentado hacer el envío sin ssl y nada, la otra vez me pasaba lo mismo y solucione poniendo el ssl pero ahora no se que pasa. Pero ahora k ya llama bien al php voy a probar de nuevo y te digo.

Prueba con el siguiente código.

Código: php
<?php

$correoreceptor = trim($_POST['[email protected]']);
$asunto = trim($_POST['subject']);
$mensaje = trim($_POST['mensaje']);
$cabeceras  = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Correo = trim($_POST['email']);
$Nombre = trim($_POST['name']);
$cabeceras .= 'From: '.$Nombre.' <'.$Correo.'>' . "\r\n";

mail($correoreceptor, $asunto, $mensaje, $cabeceras);

header('Location: a donde quieras que te redireccione.');



?>


Cambia al correo al que quieres que te llegue y al final a donde quieras que te redireccione. Es imposible que los correos te lleguen a la carpeta de spam.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ahora he probado poniendo e archivo php donde se encuentra el form en vez de directamente en la raiz y cuando intento enviar el formulario me sale un error que dice:

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/user212121/public_html/mi-carpeta/send.php on line 28

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Ya he intentado hacer el envío sin ssl y nada, la otra vez me pasaba lo mismo y solucione poniendo el ssl pero ahora no se que pasa. Pero ahora k ya llama bien al php voy a probar de nuevo y te digo.

Que tienes en la línea 28?

Saludos.



@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta voy a probar y te digo.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";

Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.

Saludos!

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta voy a probar y te digo.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";

Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.

Saludos!

Si se queda la pantalla en blanco es porque el código se ha ejecutado. Mira a ver si te llegan los correos.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta voy a probar y te digo.

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";

Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.

Saludos!

Si se queda la pantalla en blanco es porque el código se ha ejecutado. Mira a ver si te llegan los correos.

De momento no me ha llegado nada, ni siquiera en spam. @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta he probado tu codigo y pasa lo mismo, se queda la pantalla en blanco y no me llega nada x_x

-

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Vale, estaba llamando mal a los includes!!

Ahora me dice: SMTP Error: Could not connect to SMTP host.

Voy a probar con el smpt de google y el de mi hosting y os comento pero creo que ya esta, gracias por la ayuda :P

Genial!

Por las dudas te dejo los datos de SMTP de Gmail

Servidor: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Puerto: 465
User: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pass: PasswordGmail

Saludos!
ANTRAX


Febrero 12, 2016, 11:02:47 PM #19 Ultima modificación: Febrero 13, 2016, 08:33:32 AM por blackdrake
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Genial!

Por las dudas te dejo los datos de SMTP de Gmail

Servidor: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Puerto: 465
User: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Pass: PasswordGmail

Saludos!
ANTRAX

He probado varias cosas y me sigue dando el mismo error. Primero he habilitado POP y IMAP en mi cuenta Gmail. ( Sí, lo tenía deshabilitado  ??? )

He puesto la línea del ssl porque según he leído, para el servidor SMTP de gmail eso necesita estar habilitado. He comprobado si la el user y pass es correcto miles de veces y he probado con otros correos de gmail (habilitando pop y imap de nuevo) y nada. He probado el puerto 465 (con ssl) y el 25 (con ssl), y con los 2 me dice lo mismo:

SMTP Error: Could not connect to SMTP host.

El 404 ya sabemos que era porque estaba llamando mal a la ruta, ahora el problema es que no se puede conectar al smtp, he seguido estos pasos sin exito:
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

PD: Lo único que no intenté fue probar el puerto 587 (con tls). Lo voy a intentar así y edito.

Desde mi hosting me comentan que han desactivado el host SMTP debido al correo masivo. Y me dicen que use el de gmail.

EDITO Nada, tampoco pude con tls. Me he conectado a través de telnet al No tienes permitido ver los links. Registrarse o Entrar a mi cuenta con el puerto 25 y conecta correctamente, aquí os dejo el send.php tal como está:
Código: php
<?php
error_reporting(0);

        $email = $_POST['email'];
$name = $_POST['name'];
        $subject = $_POST['subject'];
$message = $_POST['message'];

if ($email=='' || $name=='' || $subject=='' || $message==''){

echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";

}else{

    require("../../includes/class.phpmailer.php");
    include("../../includes/class.smtp.php");
   
   
   

$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch

$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="Nombre: ".$name."<br />Email: ".$email."<br />Mensaje: ".$message."<br />";
try {
$mail->Host       = "smtp.gmail.com"; // SMTP server
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Port       = "25";                    // set the SMTP port for the GMAIL server
$mail->Username   = "[email protected]"; // SMTP account username
$mail->Password   = "password";        // SMTP account password
$mail->AddReplyTo($email, $name);
$mail->AddAddress('[email protected]', 'Hello!');
$mail->SetFrom("[email protected]", $name);
$mail->IsHTML(true);
$mail->Subject = 'Contacto';

$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$name.' \n<br />'.
'Email: '.$email.' \n<br />'.
'Mensaje: '.$message.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}

?>


A ver si alguien sabe decirme que falla.